问题
I follow this guide to ask for permissions for Android 6.0, https://developer.android.com/preview/features/runtime-permissions.html#support-lib
However, I have to destroy my application and re-launch to actually have the WRITE_EXTERNAL_STORAGE
permission, otherwise it keeps failing for file creation.
Am I missing something?
if(ActivityCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED){
ActivityCompat.requestPermissions((MainActivity)mContext,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},MY_PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE);
} else {
Intent i = new Intent(v.getContext(), ServiceDownload.class);
v.getContext().startService(i);
}
File is created in the service and this is emulator not a real device.
回答1:
It is a bug as someone already mentioned, but I found in this question that you can add this line:
android.os.Process.killProcess(android.os.Process.myPid());
after your permission has been granted. This is not a real fix, just helps avoid crashing.
来源:https://stackoverflow.com/questions/32699129/android-6-0-needs-restart-after-granting-user-permission-at-runtime