这个错误和权限判断无关系,这是您获取上下文的地方错误了。上下文一般不可能为空对象,因此大概率是您对安卓系统的生命周期不熟悉造成的。
检测单个权限您可以使用下面的函数:
' 检测指定权限是否已经被用户允许
' 权限名称格式必须严格按照安卓系统权限定义,权限名称必须使用全大写,不可拼写错误或缺少包名前缀
' 正确示例:
' android.permission.CAMERA
' 或直接通过安卓系统权限常量设置
' android.Manifest.permission.CAMERA
函数 检测权限是否已允许(权限名称 为 文本型) 为 逻辑型
@{
boolean hasPermission = false;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
hasPermission = MainActivity.getContext().checkSelfPermission(权限名称) == android.content.pm.PackageManager.PERMISSION_GRANTED;
} else {
hasPermission = MainActivity.getContext().getPackageManager().checkPermission(权限名称, MainActivity.getContext().getPackageName())
== android.content.pm.PackageManager.PERMISSION_GRANTED;
}
}
返回 hasPermission
结束 函数
使用:
' 通过 Manifest.permission 使用系统常量(推荐)
检测权限是否已允许(android.Manifest.permission.CAMERA)
' 直接使用字符串(需严格匹配系统定义)
检测权限是否已允许("android.permission.CAMERA")
调用时机:
建议在启动窗口创建完毕的事件中检测。
package com.simple.component;
//这是VCN的类
import com.simple.android.*;
@SuppressLint("NewApi")
public class 权限操作2()
{
public boolean 检查权限(String 权限名) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return 环境.取应用上下文().checkSelfPermission(权限名)
== PackageManager.PERMISSION_GRANTED;
}
return true; // 6.0以下默认视为已授权
}
}
感谢群友 感谢VCN
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkSelfPermission(java.lang.String)' on a null object reference
这个错误表明你尝试在一个 null
对象上调用 checkSelfPermission
方法,而 checkSelfPermission
是 Context
类的方法,所以这里的 Context
对象为 null
。
这个错误和权限判断无关系,这是您获取上下文的地方错误了。上下文一般不可能为空对象,因此大概率是您对安卓系统的生命周期不熟悉造成的。
检测单个权限您可以使用下面的函数:
' 检测指定权限是否已经被用户允许
' 权限名称格式必须严格按照安卓系统权限定义,权限名称必须使用全大写,不可拼写错误或缺少包名前缀
' 正确示例:
' android.permission.CAMERA
' 或直接通过安卓系统权限常量设置
' android.Manifest.permission.CAMERA
函数 检测权限是否已允许(权限名称 为 文本型) 为 逻辑型
@{
boolean hasPermission = false;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
hasPermission = MainActivity.getContext().checkSelfPermission(权限名称) == android.content.pm.PackageManager.PERMISSION_GRANTED;
} else {
hasPermission = MainActivity.getContext().getPackageManager().checkPermission(权限名称, MainActivity.getContext().getPackageName())
== android.content.pm.PackageManager.PERMISSION_GRANTED;
}
}
返回 hasPermission
结束 函数
使用:
' 通过 Manifest.permission 使用系统常量(推荐)
检测权限是否已允许(android.Manifest.permission.CAMERA)
' 直接使用字符串(需严格匹配系统定义)
检测权限是否已允许("android.permission.CAMERA")
调用时机:
建议在启动窗口创建完毕的事件中检测。
不知道错在哪里就捕获闪退的错误日志信息啊?
不然靠踩?给您算一卦?
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkSelfPermission(java.lang.String)' on a null object reference
这个错误表明你尝试在一个 null
对象上调用 checkSelfPermission
方法,而 checkSelfPermission
是 Context
类的方法,所以这里的 Context
对象为 null
。