بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

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

مدیریت گفتگو
بهزاد 8 سال پیش
آخرین تغییر: 8 سال پیش

دوستان من از همون 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();

}
});

نظرات

Criss 8 سال پیش
لطفا از این کلاس استفاده کنید و اگر مشکلی داشت پیام خصوصی کنید »//snip.uncox.com/study/229

هنوز پاسخی ثبت نشده است


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