普通用户
如何 对单个权限是否取得的判别方法 [复制链接]
喻志明 发表于 前天 01:59 78 4

我写的 一点 就闪退  不知道错那里?[[笑cry]]

喻志明 前天 21:49
引用 @Course 的回复:

这个错误和权限判断无关系,这是您获取上下文的地方错误了。上下文一般不可能为空对象,因此大概率是您对安卓系统的生命周期不熟悉造成的。

检测单个权限您可以使用下面的函数:

' 检测指定权限是否已经被用户允许
' 权限名称格式必须严格按照安卓系统权限定义,权限名称必须使用全大写,不可拼写错误或缺少包名前缀
' 正确示例:
' 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

回复
管理员 前天 20:47
引用 @喻志明 的回复:

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")

调用时机:

建议在启动窗口创建完毕的事件中检测。

回复
喻志明 前天 18:45
引用 @Course 的回复:

不知道错在哪里就捕获闪退的错误日志信息啊?

不然靠踩?给您算一卦?

捕获错误的视频教程:https://www.bilibili.com/video/BV1Bu4y147DG?p=4

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

回复
管理员 前天 17:13

不知道错在哪里就捕获闪退的错误日志信息啊?

不然靠踩?给您算一卦?

捕获错误的视频教程:https://www.bilibili.com/video/BV1Bu4y147DG?p=4

回复
 作者信息
喻志明
普通用户 云验证
专业开发指导服务

响应时间:5分钟

服务方式:官方1对1服务

工作时间:工作日 9:00 - 18:30

专业团队 · 开发指导 · 极速响应


官网 | 基础视频教程 | 在线文档 下载 VcnStudio IDE

© VcnStudio Inc All Rights Reserved

蜀ICP备17024229号