recyclerviewアダプターを使用して、このrecyclerviewにrecyclerviewと設定データがあるフラグメントがあります。
これで、アダプターのリスト項目にボタンがあり、これをクリックして、AndroidのREAD_EXTERNAL_STORAGE権限を確認して、Androidの新しい権限モデルを確認します。
このアダプターのフラグメントに新しい機能を作成して、許可が付与されているかどうかを確認し、まだ付与されていない場合は許可を要求します。
MyFragment.thisをアダプターのパラメーターとして渡し、アダプターのボタンクリックでフラグメントのメソッドを呼び出しました。
以下のコードを使用してrequestPermissionをフラグメントで呼び出しました。
if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
ConstantVariables.READ_EXTERNAL_STORAGE);
}
onRequestPermissionsResult
以下のコードを使用して、メソッドをフラグメントでオーバーライドしました。
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ConstantVariables.READ_EXTERNAL_STORAGE:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, proceed to the normal flow.
startImageUploading();
} else {}
ただし、このアクティビティのonRequestPermissionsResultメソッドが呼び出される代わりに、呼び出されません。
同じonRequestPermissionsResultメソッドをフラグメントの親アクティビティにも定義し、それが呼び出されています。
アクティビティのonRequestPermissionsResultメソッドを削除できませんが、フラグメントから許可をリクエストするときにフラグメントのonRequestPermissionsResultメソッドを呼び出したいです。これどうやってするの?私はここで何か悪いことをしていますか、誰かがここでアイデアを持っている場合は私を助けてください。