显示运行时权限对话框时出现异常
Exception while displaying Runtime permission dialog
我正在尝试显示 READ_PHONE_STATE 对话框但出现以下异常
GrantPermissionsActivity: No package: null
android.content.pm.PackageManager$NameNotFoundException
at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:254)
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:239)
at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.getCallingPackageInfo(GrantPermissionsActivity.java:350)
at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:101)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
我已经在清单文件中声明了权限,并使用以下代码显示权限对话框。
public void requestPermission(Activity activity, String[] permission, int permissionRequestCode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.shouldShowRequestPermissionRationale(mActivity, permission[0])) {
// todo : show some message here
ActivityCompat.requestPermissions(activity, permission, permissionRequestCode);
} else {
ActivityCompat.requestPermissions(activity, permission, permissionRequestCode);
}
}
}
不确定这里有什么问题。早些时候它工作正常,但自从我将逻辑移到其他地方后它就停止工作了。请提出建议。
找到答案。
我收到此异常的原因是因为我传递给 requestPermission
方法的 activity 引用为空,即 activity 在我请求之前实际上已经完成许可,因此我得到了那个例外。
因此请确保您传递给 requestPermission
的 activity/fragment 实例不为空。
希望对您有所帮助。
我正在尝试显示 READ_PHONE_STATE 对话框但出现以下异常
GrantPermissionsActivity: No package: null
android.content.pm.PackageManager$NameNotFoundException
at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:254)
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:239)
at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.getCallingPackageInfo(GrantPermissionsActivity.java:350)
at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:101)
at android.app.Activity.performCreate(Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
我已经在清单文件中声明了权限,并使用以下代码显示权限对话框。
public void requestPermission(Activity activity, String[] permission, int permissionRequestCode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.shouldShowRequestPermissionRationale(mActivity, permission[0])) {
// todo : show some message here
ActivityCompat.requestPermissions(activity, permission, permissionRequestCode);
} else {
ActivityCompat.requestPermissions(activity, permission, permissionRequestCode);
}
}
}
不确定这里有什么问题。早些时候它工作正常,但自从我将逻辑移到其他地方后它就停止工作了。请提出建议。
找到答案。
我收到此异常的原因是因为我传递给 requestPermission
方法的 activity 引用为空,即 activity 在我请求之前实际上已经完成许可,因此我得到了那个例外。
因此请确保您传递给 requestPermission
的 activity/fragment 实例不为空。
希望对您有所帮助。