آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

عدم دریافت پاسخ از onRequestPermissionsResult

بهزاد  8 سال پیش  8 سال پیش
0 0

دوستان من از همون Helper که استاد نوشتند برای دریافت مجوز پرمیشن هام استفاده میکنم اما این متد بمن پاسخی نمیده!

اگر کاربر allow رو بزنه که پرمیشن دریافت میشه و بمن هم باز onRequestPermissionsResult پاسخی نمیده

اگر کاربر پیام پرمیشن رو لغو هم کنه باز هم onRequestPermissionsResult بمن پاسخی نمیده

کسی علتشو میدونه؟

سورسشم اینجا گذاشتم


public class RequestHelper extends AppCompatActivity {

private static List<RequestHelper> requests = new ArrayList<>();
private static int lastRequestCode = 100;
private static boolean isFirstRequest = true;

private int requestCode;
private Activity activity;
private OnGrantedListener onGrantedListener;
private OnDeniedListener onDeniedListener;
private String permission;
private boolean isFinished;

public interface OnGrantedListener {
void onGranted();
}

public interface OnDeniedListener {
void onDenied();
}

public RequestHelper(Activity activity) {
this.activity = activity;
}

public void request(String permission, OnGrantedListener onGrantedListener, OnDeniedListener onDeniedListener) {
requests.add(this);
lastRequestCode++;
requestCode = lastRequestCode;

this.permission = permission;
this.onGrantedListener = onGrantedListener;
this.onDeniedListener = onDeniedListener;
if (isFirstRequest) {
nextRequest();
isFirstRequest = false;
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
for (RequestHelper request: requests) {
if (requestCode == request.requestCode) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (request.onGrantedListener != null) {
request.onGrantedListener.onGranted();
}
} else {
if (request.onDeniedListener != null) {
request.onDeniedListener.onDenied();
}
}
request.isFinished = true;
nextRequest();
}
}
}

public void nextRequest() {

for (RequestHelper request: requests) {
if (!request.isFinished) {
// Toast.makeText(G.getContext(), "01", Toast.LENGTH_SHORT).show();
int granted = ActivityCompat.checkSelfPermission(request.activity, request.permission);
if (granted == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(request.activity, new String[]{request.permission}, request.requestCode);
}
return;
}
}

isFirstRequest = true;
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MainActivity :
RequestHelper requestHelper = new RequestHelper(this);
requestHelper.request(Manifest.permission.WRITE_EXTERNAL_STORAGE, new RequestHelper.OnGrantedListener() {
@Override
public void onGranted() {
Toast.makeText(LoginActivity.this,"Oh yes", Toast.LENGTH_LONG).show();
}
}, new RequestHelper.OnDeniedListener() {
@Override
public void onDenied() {
Snackbar.make(findViewById(R.id.button_enter), "NO Write", Snackbar.LENGTH_SHORT).show();

}
});
requestHelper.request(Manifest.permission.READ_EXTERNAL_STORAGE, new RequestHelper.OnGrantedListener() {
@Override
public void onGranted() {
Snackbar.make(findViewById(R.id.button_enter), "YES READ", Snackbar.LENGTH_SHORT).show();

}
}, new RequestHelper.OnDeniedListener() {
@Override
public void onDenied() {
Snackbar.make(findViewById(R.id.button_enter), "no REad", Snackbar.LENGTH_SHORT).show();

}
});
0 0
لطفا از این کلاس استفاده کنید و اگر مشکلی داشت پیام خصوصی کنید »//snip.uncox.com/study/229 (8 سال پیش)
0 0
لینک (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .