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;