[Unity][Android]安卓手机设备动态获取权限

本文介绍了如何在Unity编辑器中使用AndroidRuntimePermissions插件动态获取安卓设备权限。通过检查和请求权限的函数,如CheckPermission、CheckPermissions和RequestPermissions,实现权限管理。同时,详细讲解了将关键代码导入Android Studio项目的过程,并提供了相关资源链接。
摘要由CSDN通过智能技术生成

Unity Asset Store里面

AndroidRuntimePermissions插件 参考资料1

在Unity编辑器内 动态获取 安卓手机设备的权限

在Unity编辑器 的 代码 动态获取权限。

AndroidRuntimePermissions.cs里面有 源码

只列举几个常用的函数。

调用权限问题

这样做会有个问题,当调用 权限 的时候,如果 没有 勾选 一直获取权限,第一次会 自动退出APP。

基础函数

检查单个权限是否获取AndroidRuntimePermissions.CheckPermission

检查多个权限是否获取AndroidRuntimePermissions.CheckPermissions

请求多个权限AndroidRuntimePermissions.RequestPermissions

...
 AndroidRuntimePermissions.Permission[] result = AndroidRuntimePermissions.RequestPermissions("android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.INTERNET");
        if (result[0] == AndroidRuntimePermissions.Permission.Granted && result[1] == AndroidRuntimePermissions.Permission.Granted)//遍历result数组,判断result[i] 是否 == AndroidRuntimePermissions.Permission.Granted
        { 
            Debug.Log( "We have all the permissions!" );
            //传递参数给安卓设备 调用 安卓的逻辑
        }
        else
        { //其中有些 权限没有获取
            Debug.Log( "Some permission(s) are not granted..." );
        } 
...

异步请求单个权限RequestPermissionAsync

整合代码

 #region 权限

    #region 中文权限名字对照

    /// <summary>
    /// 中文权限名字,字符串变量
    /// </summary>
    public static Dictionary<string, string> dict_permission = new Dictionary<string, string>
    {
        { "允许程序写入外部存储","android.permission.WRITE_EXTERNAL_STORAGE"},

    };//根据参考资料2 里面 继续填写

    /// <summary>
    /// 检查 字典里面 是否 有 中文权限的名称,便于获取 变量字符串名字
    /// </summary>
    /// <param name="cnStr">中文权限名称</param>
    /// <returns>真为可以获取,假为不能获取</returns>
    public static bool checkDictPermission(string cnStr)
    {
        if (dict_permission.ContainsKey(cnStr))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    /// <summary>
    /// 获取 变量字符串名字
    /// </summary>
    /// <param name="cnStr">中文权限名称</param>
    /// <returns>真为权限 变量 字符串,假为 空</returns>
    public static string checkDictPermission_(string cnStr)
    {
        if (dict_permission.ContainsKey(cnStr))
        {
            return dict_permission[cnStr];
        }
        else
        {
            return "";
        }
    }
    #endregion//中文权限名字对照
//===========================================
    #region 检查权限

    #region 检查单个权限

    /// <summary>
    /// 检查单个 权限 是否 获取
    /// </summary>
    /// <param name="PermissionName">权限名字</param>
    /// <returns>真为已经获取权限,假为没有获取权限</returns>
    public static bool checkPermission(string PermissionName)
    {
        AndroidRuntimePermissions.Permission result_ = AndroidRuntimePermissions.CheckPermission(PermissionName);
        if (result_ == AndroidRuntimePermissions.Permission.Granted)
        {
            return true;
        }
        else
            return false;
 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值