网站建设几大技巧,做外贸是不是必须有网站,主营网站建设会计记账,设计师可以做兼职的网站有哪些最近公司准备用Unity做一个安卓端的文件管理器功能#xff0c;文件管理器已经做完了。刚开始的时候想要申请一下所有文件权限#xff0c;发现在Unity里面申请所有文件权限(android.permission.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相关APIpublic 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() {Overridepublic void onGranted(ListString permissions, boolean allGranted) {if (!allGranted) {return;}Log.i(TAG, onGranted: 申请权限成功);}Overridepublic void onDenied(ListString 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 updatevoid Start(){AndroidJavaObject androidJavaObject new AndroidJavaObject(com.demo.myapplication.unitypermission);androidJavaObject.Call(RequestPermission);}// Update is called once per framevoid Update(){}
}我的项目仓库地址为 https://github.com/oneSitDown/UnityXXpermission