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


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

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

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

    unity端:

    using UnityEngine;
    #if UNITY_ANDROID
    AndroidJavaClass androidClass = new AndroidJavaClass("com.xxx.xxx.UnityPlayerActivity");//获取class,填写正确的Activity
    
    androidClass.CallStatic("requestExternalStorage");//调用静态方法,requestExternalStorage这个函数名你可以自己取,记住是静态函数
    #endif

    java端:

    import android.support.v4.content.PermissionChecker;
    import android.support.v4.app.ActivityCompat;
    //前面说过了静态方法,android.permission.WRITE_EXTERNAL_STORAGE是外部存储权限,同理其他权限也可以动态请求
    public static void requestExternalStorage() {
         //检查权限避免重复请求相同权限,参数: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")) {
          (new Builder(b)).setMessage(string.storage_permissions_remind)
          .setPositiveButton("OK", new OnClickListener() {
               public void onClick(DialogInterface var1, int var2) {
              //点击ok,则再次请求
              requestExternalStorage();
               }
          }).setNegativeButton("Cancel", new OnClickListener() {
              public void onClick(DialogInterface var1, int var2) {
                  //点击cancel,todo
              }
          }).create().show();
      super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    }
  • 相关阅读:
    Rhino 是一个完全使用Java语言编写的开源JavaScript实现。Rhino通常用于在Java程序中,为最终用户提供脚本化能力。它被作为J2SE 6上的默认Java脚本化引擎。
    VS的快捷键F12改成和ECLIPSE一样用ctrl+点击下载线
    到底要不要拆分函数
    “DllRegisterServer的调用失败”问题解决办法(转)
    select into的缺点
    win8 下脚本安装IIS
    快速打开IIS的方法
    windows下硬盘的逻辑结构
    sql server 2005/2008R2 报“红叉”错,即“不允许所请求的注册表访问权”的错误
    rundll32.exe的相关使用语句
  • 原文地址:https://www.cnblogs.com/fengxing999/p/11420124.html
Copyright © 2020-2023  润新知