android权限申请,悲催努比亚重启大法

https://www.cnblogs.com/msxh/p/10889484.html
https://cloud.tencent.com/developer/article/1429431

android.permission.INTERNET 默认打开的
android.permission.ACCESS_NETWORK_STATE 不打开

连续折腾3、4天,游戏安装到努比亚手机,结果刚启动就闪退。

最后解决的方法是:重置到出厂设置。

其中遇到一个导致崩溃的副产品:

public void PermissionRequest()
        {
    
    
            Debug.LogError("PermissionRequest Start");
            string str = UnityEngine.SystemInfo.deviceUniqueIdentifier;
            Debug.LogError("PermissionRequest End");

            m_text.text += "hello" + str + "aaa";

            bool INTERNET = Permission.HasUserAuthorizedPermission("android.permission.INTERNET");
            bool ACCESS_NETWORK_STATE = Permission.HasUserAuthorizedPermission("android.permission.ACCESS_NETWORK_STATE");
            bool ACCESS_WIFI_STATE = Permission.HasUserAuthorizedPermission("android.permission.ACCESS_WIFI_STATE");
            bool WRITE_EXTERNAL_STORAGE = Permission.HasUserAuthorizedPermission("android.permission.WRITE_EXTERNAL_STORAGE");
            bool READ_PHONE_STATE = Permission.HasUserAuthorizedPermission("android.permission.READ_PHONE_STATE");
            bool VIBRATE = Permission.HasUserAuthorizedPermission("android.permission.VIBRATE");
            bool GET_TASKS = Permission.HasUserAuthorizedPermission("android.permission.GET_TASKS");
            bool RECORD_AUDIO = Permission.HasUserAuthorizedPermission("android.permission.RECORD_AUDIO");

            string str2 = "\nINTERNET=" + INTERNET;
            str2 += "\nACCESS_NETWORK_STATE=" + ACCESS_NETWORK_STATE;
            str2 += "\nACCESS_WIFI_STATE=" + ACCESS_WIFI_STATE;
            str2 += "\nWRITE_EXTERNAL_STORAGE=" + WRITE_EXTERNAL_STORAGE;
            str2 += "\nREAD_PHONE_STATE=" + READ_PHONE_STATE;
            str2 += "\nVIBRATE=" + VIBRATE;
            str2 += "\nGET_TASKS=" + GET_TASKS;
            str2 += "\nRECORD_AUDIO=" + RECORD_AUDIO;
            m_text.text += str2;


            //string[] m_devices = Microphone.devices; //自动打开麦克风确认申请
            //m_text.text += m_devices.Length;

            Permission.RequestUserPermissions(permissions); //弹出两个申请权限的对话框


            //int graphicsDeviceID = UnityEngine.SystemInfo.graphicsDeviceID; //不会触发READ_PHONE_STATE
            //string graphicsDeviceVersion = SystemInfo.graphicsDeviceVersion;
            //m_text.text += "\n" + graphicsDeviceID + "  " + graphicsDeviceVersion;
        }

Permission.RequestUserPermissions(permissions);
反复申请权限,在努比亚上会先退出应用,然后再弹出权限申请框。
但是在游戏手机上则不会退出应用。

原先我是无脑的申请权限,其实应该先判断某个权限是否已经授权了,如果没有授权,再去申请。

此外,我还注意到,如果不去申请,但是当你使用到了某个权限,会动态的弹出权限申请框。

此外还得主要,在AndroidManifest.xml中一定要填写要申请的权限,否则,你即使动态申请了,也将申请不成功。
比如:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.perfectworld.cfgame"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
	<uses-permission android:name="android.permission.READ_PHONE_STATE" />
	<uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false"  android:usesCleartextTraffic="true">

        <activity android:name="com.sdk.MainActivity"
                    android:label="@string/app_name"
                    android:launchMode="standard"
                    android:theme="@android:style/Theme.Black.NoTitleBar" 
                    android:screenOrientation="landscape" 
                    android:configChanges="keyboardHidden|orientation"
                    >
		  <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
        </activity>

		<activity android:name="com.perfectworld.cfgame.wxapi.WXEntryActivity"
				 android:exported="true"
				 android:screenOrientation="landscape"
				 android:theme="@android:style/Theme.NoDisplay"
            	>
		</activity>
		<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
        </application>
</manifest>

在这里插入图片描述
比如这里填写了两个权限:
你用代码:
Permission.RequestUserPermissions(permissions); //弹出两个申请权限的对话框
那么可以弹出权限申请框。
但是如果在AndroidManifest.xml不填写,那么是不会弹出权限申请款,而导致直接崩溃。

Guess you like

Origin blog.csdn.net/wodownload2/article/details/120325717