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); 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM