Facing weird issue with requestPermissions method of activity. It is now showing if I debug on device. Works well if I debug app on Android studio emulator. Below is the code for requesting permission.
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ) {
return true;
} else {
requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
} else { //permission is automatically granted on sdk<23 upon installation
return true;
}
}
Here is AndroidManifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
And build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "abc.xyz"
minSdkVersion 23
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Device I'm running for debugging is OnePlus 1. Am I missing anything?
Here are some additional logs while trying to requestPermissions:
07-08 19:42:14.222 798-815/? I/ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras)} from uid 10206 on display 0
07-08 19:42:14.224 798-815/? W/ActivityManager: Bad activity token: android.os.BinderProxy@ae80cbb
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.android.server.am.ActivityRecord$Token
at com.android.server.am.ActivityRecord.forTokenLocked(ActivityRecord.java:424)
at com.android.server.am.ActivityStack.isInStackLocked(ActivityStack.java:467)
at com.android.server.am.ActivityStackSupervisor.isInAnyStackLocked(ActivityStackSupervisor.java:592)
at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1484)
at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1090)
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4077)
at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4064)
at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:162)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2670)
at android.os.Binder.execTransact(Binder.java:453)
07-08 19:42:14.224 798-815/? W/ActivityManager: Bad activity token: android.os.BinderProxy@ae80cbb
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.android.server.am.ActivityRecord$Token
at com.android.server.am.ActivityRecord.forTokenLocked(ActivityRecord.java:424)
at com.android.server.am.ActivityStack.isInStackLocked(ActivityStack.java:467)
at com.android.server.am.ActivityStackSupervisor.isInAnyStackLocked(ActivityStackSupervisor.java:592)
at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1484)
at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1090)
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4077)
at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4064)
at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:162)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2670)
at android.os.Binder.execTransact(Binder.java:453)
07-08 19:42:14.225 798-815/? W/ActivityManager: startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { act=android.content.pm.action.REQUEST_PERMISSIONS flg=0x800000 pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras) }
07-08 19:42:14.258 12029-12029/? I/GrantPermissionsActivity: No package: null
android.content.pm.PackageManager$NameNotFoundException
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:138)
at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.getCallingPackageInfo(GrantPermissionsActivity.java:349)
at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:99)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)