Asy*_*nc- 4 java android android-context android-permissions
在查询Android日历以查找事件之前,我需要检查权限.要做到这一点,Android工作室警告我需要在查询之前进行检查.自动生成的代码就是这个:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
System.out.println("NO ACCESS TO CALENDAR!! Abort mission, abort mission!!");
}
Run Code Online (Sandbox Code Playgroud)
尝试运行它时,我收到此错误:
尝试
在空对象引用上调用虚方法'int android.content.Context.checkPermission(java.lang.String,int,int)'
所以很明显,此时某些东西是空的,我试图以不同的方式获取应用程序的上下文,但它仍然是相同的错误.我试过的其他事情是这个代码,它应该处理低于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);
}
Run Code Online (Sandbox Code Playgroud)
仍然得到同样的错误,任何人都可以帮助我吗?
Com*_*are 16
它是一个单独的类,控制器:公共类DummyData扩展Activity {....}
那不行.
Activity除非是真实活动,否则永远不要延长,您将在清单中注册.
永远不要创建一个Activityvia构造函数的实例(例如,new DummyData()你在代码中的某个地方).使用startActivity()以显示您在清单已注册的活动.
就目前而言,虽然您的DummyData类可能从编译的角度来看,但它在运行时不起作用.一个Activity需要由框架被实例化,而不是与你的情况DummyData.
将真实 Context对象checkSelfPermission()传递给,并将真实 Activity对象传递给requestPermissions().在这种情况下,"真实"意味着"从框架中交给您".
| 归档时间: |
|
| 查看次数: |
13384 次 |
| 最近记录: |