我用下面的代碼來檢查權限:獲准應用於應用程序時,它重新啓動
if (getActivity().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED || getActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
getActivity().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS);
}
而且貝婁代碼我趕上結果:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
if(requestCode == MY_PERMISSIONS){
if(grantResults[0] != PackageManager.PERMISSION_GRANTED ||
grantResults[1] != PackageManager.PERMISSION_GRANTED){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.per_check_m);
builder.setCancelable(false);
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS);
}
}
});
builder.show();
}else {
startActivityForResult(com.media_iran.android.iranama.Utils.ImagePicker.getPickImageIntent(getActivity()), INTENT_REQUEST_GET_IMAGES);
}
}
}
但是,當用戶接受的權限,這不是」無需工作,需要重新啓動應用程序,並從應用程序歷史記錄中清除它以獲取工作權限。
我發現它是android中的一個錯誤,但這樣其他應用程序如何工作? 有沒有解決方法?
我在包含片段的活動上嘗試過,但不能再次運行 – Ali
我在FragmentActivity中嘗試過,而不是在活動 – Ali
'requestPermissions()'在您的片段上,但onRequestPermissionsResult()代碼應該在您的活動中。 –