私は、ExportPassionResultクラスがextends AlertDialog
、さらにimplements ActivityCompat.OnRequestPermissionsResultCallback
というExportDialogクラスを持っています。私は、ExportDialogクラス内で許可を要求しています。onRequestPermissionsResultはAlertDialogクラスで呼び出されません
ActivityCompat.requestPermissions(getOwnerActivity(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
許可はマニフェストにも含まれています。
ただし、ActivityCompat.requestPermissions
が呼び出された場合、onRequestPermissionsResultは、許可リクエストの結果とともに呼び出されることはありません。
エミュレータでテストすると、許可要求が実行されており、許可要求を正常に有効または拒否できていることがわかります。 onRequestPermissionResult内のコードが決して呼び出されないことだけです。
thisのようないくつかの投稿をチェックしましたが、私のクラスはAlertDialogを拡張して以来、私の問題には役立ちません。 onRequestPermissionResultため
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getOwnerActivity(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
return false;
}
コードスニペット:要求の許可のための
コードスニペットクラス宣言の
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
exportCategory();
} else {
Toast.makeText(getContext(), "Export functionality can't be carried out.", Toast.LENGTH_LONG).show();
}
}
}
}
コードスニペット(CustomDialogはAlertDialog拡張):
public class ExportDialog extends CustomDialog implements ActivityCompat.OnRequestPermissionsResultCallback { ... }
をいただき、ありがとうございますあなたの助けを事前に!
onRequestPermissionsResultメソッドは、呼び出された '親(アクティビティ)'でのみ実行されます。 – sunita