Android 显示运行时权限对话框时发生异常

Android 显示运行时权限对话框时发生异常,android,android-permissions,Android,Android Permissions,我试图显示READ_PHONE_STATE对话框,但出现以下异常 GrantPermissionsActivity: No package: null android.content.pm.PackageManager$NameNotFoundException at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:254) at android

我试图显示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
方法的活动引用为null,即,在我请求权限之前,活动实际上已经完成,因此我获得了该异常

因此,请确保传递给
requestPermission
的活动/片段实例不为null

希望这有帮助