Unity通过XXpermission插件获取MANAGE_EXTERNAL_STORAGE权限

最近公司准备用Unity做一个安卓端的文件管理器功能,文件管理器已经做完了。刚开始的时候想要申请一下所有文件权限,发现在Unity里面申请所有文件权限(android.permission.MANAGE_EXTERNAL_STORAGE)相对来说比较麻烦。所以准备写一下文章记录一下如何申请到所有文件权限的。

我的
Unity版本是2021.3.27f1c2
Android版本是2022.3.1

在网上找到一个安卓使用的比较方便的插件叫XXPermissions,申请权限的界面也封装好了的。仓库地址是: https://github.com/getActivity/XXPermissions
大家假如安卓功底够好的话,可以直接看这个仓库的readme。
第一步
在这里插入图片描述
在这里插入图片描述
创建一个空的activty工程
根据仓库的readme配置好相关文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建个java类
在这里插入图片描述叫unitypermission,复制下面的代码进去

package com.demo.myapplication;

import android.app.Activity;
import android.util.Log;


import java.util.List;

public class unitypermission {
    private String TAG = "PERMISSION";
    private Activity _unityActivity;

    Activity getActivity() {
        if (null == _unityActivity) {
            try {
                Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");
                Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype);
                _unityActivity = activity;
            } catch (ClassNotFoundException e) {

            } catch (IllegalAccessException e) {

            } catch (NoSuchFieldException e) {

            }
        }
        return _unityActivity;
    }
//调用XXpermission相关API
    public void RequestPermission() {
        com.hjq.permissions.XXPermissions.with(getActivity())
                // 申请单个权限
                .permission(com.hjq.permissions.Permission.MANAGE_EXTERNAL_STORAGE)
                // 设置权限请求拦截器(局部设置)
                //.interceptor(new PermissionInterceptor())
                // 设置不触发错误检测机制(局部设置)
                //.unchecked()
                .request(new com.hjq.permissions.OnPermissionCallback() {

                    @Override
                    public void onGranted(List<String> permissions, boolean allGranted) {
                        if (!allGranted) {
                            return;
                        }
                        Log.i(TAG, "onGranted: 申请权限成功");
                    }

                    @Override
                    public void onDenied(List<String> permissions, boolean doNotAskAgain) {
                        if (doNotAskAgain) {
                            // 如果是被永久拒绝就跳转到应用权限系统设置页面
                            com.hjq.permissions.XXPermissions.startPermissionActivity(getActivity(), permissions);
                        } else {
                            // 处理权限被拒绝的情况
                        }
                    }
                });
    }
}

打开build.gradle
在这里插入图片描述
点击绿色的按钮打jar包出来,注意上图第二个红框,可能不同的AndroidStudio出来jar包的位置不一样。

复制jar包至Unity工程的Plugins/Android下
在这里插入图片描述
打开Unity的project settings,勾选以下几个地方
在这里插入图片描述然后plugins下面会多出下面几个文件
在这里插入图片描述
依次修改以下文件为
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

写一个C#脚本,挂到场景任意地方,然后打包至安卓手机上运行。就能够申请所有文件权限了。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        AndroidJavaObject androidJavaObject = new AndroidJavaObject("com.demo.myapplication.unitypermission");
        androidJavaObject.Call("RequestPermission");
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

我的项目仓库地址为
https://github.com/oneSitDown/UnityXXpermission

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity中,要使用android.permission.READ_LOGS权限,需要根据不同的Unity版本和Bugly Unity Plugin版本进行相应的配置。根据引用[1]中的Android SDK使用指南,可以修改导出的Android工程的AndroidManifest.xml文件,将android.permission.READ_LOGS权限添加到权限声明中。具体步骤如下: 1. 打开Unity项目工程。 2. 导入最新版本的Bugly Unity Plugin。根据引用中的通用部分集成步骤,下载并导入Bugly Unity Plugin的相关文件到您的Unity工程中。 3. 打开导出的Android工程的AndroidManifest.xml文件。这个文件位于Unity项目工程的Assets/Plugins/Android目录下。 4. 在AndroidManifest.xml文件中的权限声明部分,添加如下权限: <uses-permission android:name="android.permission.READ_LOGS" /> 通过以上步骤,您就可以将android.permission.READ_LOGS权限添加到Unity项目的AndroidManifest.xml文件中,以实现读取logcat日志的功能。请注意,根据具体的Bugly Unity Plugin版本和Unity版本,可能还需要执行其他配置和集成步骤,具体可以参考Bugly Unity Plugin的官方文档或相关资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Bugly Unity Plugin](https://blog.csdn.net/qq_39816832/article/details/80238872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [unity--关于自动添加READ_PHONE_STATE权限](https://blog.csdn.net/lalate/article/details/84340644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值