查了一下资料,unity里面自带有动态获取用户权限的方法Permission,需要UnityEngine.Android命名空间,使用动态获取接口RequestUserPermissions,参数是一个string数组类型参数
测试代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;
public class PermissionMgr : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
string[] NowTypes = new string[]{
"android.permission.MANAGE_DOCUMENTS",
"android.permission.DELETE_CACHE_FILES",
"android.permission.READ_OWNER_DATA",
"android.permission.INTERNET",
"android.permission.ACCESS_WIFI_STATE",
"android.permission.ACCESS_FINE_LOCATION",
"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS",
"android.permission.READ_SMS",
"android.permission.RECEIVE_SMS",
"android.permission.ANSWER_PHONE_CALLS",
"android.permission.PROCESS_OUTGOING_CALLS",
"android.permission.READ_CONTACTS",
"android.permission.READ_CALENDAR",
"android.permission.RECORD_AUDIO",
"android.permission.STATUS_BAR",
"android.permission.EXPAND_STATUS_BAR",
"android.permission.INSTALL_PACKAGES",
"android.permission.WAKE_LOCK",
};
Permission.RequestUserPermissions(NowTypes);
}
// Update is called once per frame
void Update()
{
}
}
安卓权限可以去这里查看一下,引用一下这位大佬的:
安卓权限归纳引用
最重要的是:动态获取需要修改unity安装目录下的UnityManifest.xml文件:
这是我的目录:D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk(右键unity桌面图标打开目标文件夹)
只需要在:“</manifest>”上面添加需要获取的权限就可以了
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector">
<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" />
</activity>
</application>
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
<uses-permission android:name="android.permission.READ_OWNER_DATA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.STATUS_BAR" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
</manifest>
打包之后测试:没问题,可以获取对应权限