IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Unity2022中的android权限处理(Permissions) -> 正文阅读

[移动开发]Unity2022中的android权限处理(Permissions)

Unity2022中的android权限处理(Permissions)
动态权限,权限弹窗

注意事项:
1.因为新规等因素需要提前弹出游戏自己的权限描述界面
2.玩家连续多次拒绝权限的处理

在activity中设置屏蔽android权限弹窗,避免一点开应用各种权限无序弹出

<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />
    <application
        android:name="com.longtu.android.channels.Info.LTBase_Channels_Application"
        android:allowBackup="true"
		android:usesCleartextTraffic="true"
		
		android:label="@string/app_name">
        <activity android:name="com.longtugame.rjsdk.MainActivity"
                android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
                android:allowEmbedded="@string/app_name"
				android:exported = "true"
                android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity"
                        android:value="true" />
			<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />
        </activity>

shouldShowRequestPermissionRationale的正确使用

 //最好的方法是用游戏自己的win来做提示,点击确定以后在弹出手机权限申请提示
    public static bool IsShowPermissionPopWin()
    {
        bool isShowWin = false;
// #if !UNITY_EDITOR && UNITY_ANDROID
 #if  UNITY_ANDROID
        AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        var pp = new AndroidJavaClass("androidx.core.app.ActivityCompat");
        //没有的权限直接字符串定义,最终调用的还是android方法
        var pList=new List<string>();
        pList.Add("android.permission.READ PHONE STATE");
        pList.Add(UnityEngine.Android.Permission.ExternalStorageRead);
        pList.Add(UnityEngine.Android.Permission.ExternalStorageWrite);
        
        var isShow1 = pp.CallStatic<bool>("shouldShowRequestPermissionRationale", currentActivity,
            pList[0]);
        var isshow2 = pp.CallStatic<bool>("shouldShowRequestPermissionRationale", currentActivity,
            pList[1]);
        var isShow3 = pp.CallStatic<bool>("shouldShowRequestPermissionRationale", currentActivity,
            pList[2]);

        ///Google的原意是:
        //1,没有申请过权限,申请就是了,所以返回false;
        //2,申请了用户拒绝了,那你就要提示用户了,所以返回true,
        //3,用户选择了拒绝并且不再提示,那你也不要申请了,也不要提示用户了,所以返回false,114.已经允许了,不需要申请也不需要提示,所以返回false,
        if (isShow1 || isshow2 | isShow3)
        {
            // if (
            //     !UnityEngine.Android.Permission.HasUserAuthorizedPermission(pList[0]) ||
            //     !UnityEngine.Android.Permission.HasUserAuthorizedPermission(pList[1]) ||
            //     !UnityEngine.Android.Permission.HasUserAuthorizedPermission(pList[2])
            // )
            // {
            //     UnityEngine.Android.Permission.RequestUserPermissions(pList.ToArray());
            // }

            isShowWin = true;
        }
        return isShowWin;
#endif
    }

Android 中的权限介绍(扩展以及原理解析)

系统权限分为两类:正常权限和危险权限。

正常权限不会直接给用户隐私权带来风险。如果您的应用在其清单中列出了正常权限,系统将自动授予该权限。
危险权限会授予应用访问用户机密数据的权限。如果您的应用在其清单中列出了正常权限,系统将自动授予该权限。如果您列出了危险权限,则用户必须明确批准您的应用使用这些权限。

注意事项:

权限是分组的,同一组的权限申请其中一个,同组的权限就全部都申请了。

特殊权限组:

CALENDAR 日历
CAMERA 相机
CONTACTS 联系人
LOCATION 定位
MICROPHONE 麦克相关,比如录音
PHONE 手机状态
SENSORS 传感器
SMS 短信
STORAGE 存储权限

在这里插入图片描述

Android中的权限接口

import android.support.v4.content.PermissionChecker;
import android.support.v4.app.ActivityCompat;
//前面说过了静态方法,android.permission.WRITE_EXTERNAL_STORAGE是外部存储权限,同理其他权限也可以动态请求
public static void verifyPermissions() {
     //检查权限避免重复请求相同权限,参数:activity,权限名
        if (PermissionChecker.checkSelfPermission(this, "android.permission.WRITE_EXTERNAL_STORAGE") != 0) {
            ActivityCompat.requestPermissions(this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 100);//请求权限,参数:activity,权限名,请求码(不同的权限要求不同的请求码,可以自己定,比如我这个权限是100,另外的可以填102,103...)
        }
}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:34:46  更:2022-07-17 16:37:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 3:01:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码