tabLayout を 5 つのセクションでロードするダイアログがあり、そのコンテンツは ViewPager アダプタを使用して ViewPager を使用してロードされます。さて、セクションの 1 つで、ギャラリーから画像をロードする必要があります。実行時パーミッションを記述しましたが、アクティビティを持たないクラスにこのダイアログを実装したため、パーミッションのコールバックを使用できません。アクティビティのないクラスでパーミッションのコールバック メソッドを実装する方法がわかりません。
public void makePermissionRequest(){
if(ContextCompat.checkSelfPermission(showEditorActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(showEditorActivity,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, permission_request_code);
}else{
fetchImagesFromDevice();
}
}
そしてコールバックのために..
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case permission_request_code: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i("permission..link", "allowed");
fetchImagesFromDevice();
}else{
Log.i("permission..link", "denied");
if (ContextCompat.checkSelfPermission(showEditorActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(showEditorActivity, Manifest.permission.READ_EXTERNAL_STORAGE)) {
showMessageOKCancel("You need to allow access to your Internal Memory", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//log to find out answer..
if (which == -1) {
makePermissionRequest();
}
}
});
}
}
}
}
}
}