0
選択者の選択内容に基づいてユーザのパーミッションをリクエストするのに問題があります。今のところ、私のプログラムは、選択者の意図が表示される前に許可を要求しています。インテントを選択した後、パーミッションを要求する方法でどのように達成できますか。以下のコードは、カメラの許可または保存の許可を最初に要求した後、カメラまたはギャラリーから写真を撮ることをユーザーに選択させるだけです。Android選択肢インテントのユーザアクションに基づいてパーミッションをリクエストする方法
Dexter.checkPermissions(new MultiplePermissionsListener() {
Intent chooserIntent = null;
List<Intent> intentList = new ArrayList<>();
Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
List<PermissionGrantedResponse> list_GrantedPermission;
list_GrantedPermission = report.getGrantedPermissionResponses();
//check permission granted
if (report.areAllPermissionsGranted()){
intentList = addIntentsToList(mContext, intentList, takePhotoIntent);
intentList = addIntentsToList(mContext, intentList, pickIntent);
}
else if (list_GrantedPermission.size() > 0){
String grantedpermissionName = list_GrantedPermission.get(0).getPermissionName();
if (grantedpermissionName.equals(android.Manifest.permission.CAMERA))
intentList = addIntentsToList(mContext, intentList, takePhotoIntent);
else
intentList = addIntentsToList(mContext, intentList, pickIntent);
}
else {
}
//request a source
if (intentList.size() > 0) {
chooserIntent = Intent.createChooser(intentList.remove(intentList.size() - 1),
getString(R.string.message_select_source));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Parcelable[]{}));
startActivityForResult(chooserIntent, REQUEST_CODE_PICTURE);
}
if (report.isAnyPermissionPermanentlyDenied()){
final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(mContext);
alertBuilder.setTitle(getString(R.string.message_permission_required));
alertBuilder.setCancelable(true);
alertBuilder.setMessage(getString(R.string.message_permission_required));
alertBuilder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog dialog = alertBuilder.create();
dialog.show();
}
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
token.continuePermissionRequest();
}
}, android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE);
}
});
これらのインテントを使用するためのカメラまたはストレージのアクセス権は必要ありません。 – ianhanniballake
@jingこの質問の解決方法はありますか? –
@NitinPatel残念ながら、私は解決策がありません。解決策はありますか? – jing