gpt4 book ai didi

java - 使用 android.content.Context.checkPermission 检查权限时出现空指针异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:48 24 4
gpt4 key购买 nike

在查询 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com