Unity中AndroidManifest增加权限,打开应用时不弹出权限申请

摘要:
首先,在首次打开apk时屏蔽权限弹出窗口:在Activity下添加。2.在需要权限的地方再次请求权限:unity-side:usingUnityEngine#ifUNITY_ANDROIDAndroidJavaClassandroidClass=newAnd

一 屏蔽第一次打开apk时权限弹窗:

在Activity下添加<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />。

Unity中AndroidManifest增加权限,打开应用时不弹出权限申请第1张

二 在需要权限的位置再请求权限:

unity端:

usingUnityEngine;
#if UNITY_ANDROID
AndroidJavaClass androidClass = new AndroidJavaClass("com.xxx.xxx.UnityPlayerActivity");//获取class,填写正确的Activity

androidClass.CallStatic("requestExternalStorage");//调用静态方法,requestExternalStorage这个函数名你可以自己取,记住是静态函数
#endif

java端:

importandroid.support.v4.content.PermissionChecker;
importandroid.support.v4.app.ActivityCompat;
//前面说过了静态方法,android.permission.WRITE_EXTERNAL_STORAGE是外部存储权限,同理其他权限也可以动态请求
public static voidrequestExternalStorage() {
     //检查权限避免重复请求相同权限,参数: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...)
}
}

如果请求权限时玩家拒绝授权:

//如果玩家拒绝授权,需要再次申请并说明申请理由
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
   super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  if(100 != requestCode)return;//我们刚才定义的请求码是100
  //给个弹窗告知玩家这个权限不会对他造成影响  
  if (ActivityCompat.shouldShowRequestPermissionRationale("这个权限不会访问隐私,求求你开一下嘛", "android.permission.WRITE_EXTERNAL_STORAGE")) {
      (newBuilder(b)).setMessage(string.storage_permissions_remind)
      .setPositiveButton("OK", newOnClickListener() {
           public void onClick(DialogInterface var1, intvar2) {
          //点击ok,则再次请求
requestExternalStorage();
           }
      }).setNegativeButton("Cancel", newOnClickListener() {
          public void onClick(DialogInterface var1, intvar2) {
              //点击cancel,todo
}
      }).create().show();
  super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
}

免责声明:文章转载自《Unity中AndroidManifest增加权限,打开应用时不弹出权限申请》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇QT获取窗口大小和位置等信息docker 安装 oracle下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

chrome提示"安装unity web player"

网页浏览Unity3D制作的效果时,出现提示"安装unity web player"。解决办法如下: →在浏览器中输入:chrome://flags/#enable-npapi 在NPAPI中,点击"启用"。在Native Client中,点击"启用"。 →在浏览器中输入:chrome://restart →依然出现提示:unity failed to d...

Unity中嵌入网页插件Embedded Browser2.1.0

背景 最近刚换了工作,新公司不是做手游的,一开始有点抵触,总觉得不是做游戏自己就是跨行了,认为自己不对口,但是慢慢发现在这可以学的东西面很广,所以感觉又到了打怪升级的时候了,老子就在这进阶了。 一进公司他们使用H5开发,做一款地形信息系统的软件,基于Unity开发,但是所有页面都是Js写的,所以我第一件事要做的是实现Unity嵌入网页,并实现交互。 在这里...

A星寻路算法入门(Unity实现)

最近简单学习了一下A星寻路算法,来记录一下。还是个萌新,如果写的不好,请谅解。Unity版本:2018.3.2f1 A星寻路算法是什么游戏开发中往往有这样的需求,让玩家控制的角色自动寻路到目标地点,或是让AI角色移动到目标位置,实际的情况可能很复杂,比如地图上有无法通过的障碍或者需要付出代价(时间或其他资源)才能通过的河流、沼泽等,想要让角色找到一条付出最...

Unity 实用的设置技巧

一、高亮选择 在 Scene 面板右上角的Gizom 下拉列表中,可以通过设置 Selection Outline 选项决定是否在选中物体时显示边缘的高亮标识。 二、Pixel Perfect Camera 在摄像机上挂载 Pixel Perfect Camera 组件能够使2D 像素风格的游戏画面更加整洁。但这个组件需要使用 Package Manag...

Unity推荐设置(HoloLens开发系列)

本文翻译自:Recommended settings for Unity   Unity提供了一系列默认选项,这些选项能够适用于所有平台的一般情况。但是,Unity同样为HoloLens提供了一些特殊行为,这些行为可以通过项目设置来改变。 本文内容 1 全息启动画面 2 追踪丢失(Tracking loss) 3 功能 4 了解更多   全息启动画面...

Unity3D 物体移动方法总结

1. 简介     在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。 2. 通过Transform组件移动物体     Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale)。 其实所有的移动都会导致position的改...