在查询 Android 日历中的事件之前,我需要检查权限。 为此,Android Studio 警告我需要在查询之前进行检查。 自动生成的代码是这样的:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
System.out.println("NO ACCESS TO CALENDAR!! Abort mission, abort mission!!");
}
当尝试运行它时,出现此错误:
Attempt to invoke virtual method 'int
android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference
所以很明显此时something是null,我尝试用不同的方式获取app的context,但还是一样的错误。 我尝试的另一件事是这段代码,它应该处理低于 Android 6 的目标:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CALENDAR},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
仍然出现同样的错误,有人可以帮我解决这个问题吗?
最佳答案
it's a separate class, controller: public class DummyData extends Activity { .... }
那是行不通的。
永远不要扩展 Activity
除非它是一个真正的 Activity ,一个您将在 list 中注册的 Activity 。
永远不要通过构造函数创建Activity
的实例(例如,代码中某处的new DummyData()
) .使用 startActivity()
显示您在 list 中注册的 Activity 。
就目前而言,虽然您的 DummyData
类从编译的角度来看可能有效,但它在运行时不起作用。 Activity
需要由框架实例化,而您的 DummyData
不是这种情况。
传递一个真实 Context
对象给checkSelfPermission()
,并传递一个真实 Activity
对象到 requestPermissions()
。在这种情况下,“真实”意味着“从框架交给你”。
关于java - 使用 android.content.Context.checkPermission 检查权限时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844879/