Unity 安卓權(quán)限、動(dòng)態(tài)安卓權(quán)限

MD挽拔,先罵一句辆脸,這破玩意搞了一天,能搜到的沒一個(gè)靠譜的螃诅。還有Unity啡氢,也是個(gè)賊不靠譜的。



起因:
公司沒有安卓/ios開發(fā)人員术裸,我對(duì)安卓也不熟倘是,因此項(xiàng)目做完后,一些權(quán)限獲取穗椅,全靠插件內(nèi)部自行調(diào)用辨绊,導(dǎo)致出現(xiàn)一個(gè)問題:如果用戶拒絕權(quán)限,會(huì)導(dǎo)致程序卡死/崩潰/出錯(cuò)匹表,而一些錄屏插件等等门坷,又沒有寫獲取權(quán)限是否允許和調(diào)用權(quán)限的接口宣鄙。



解決過程(不想看過程就直接看最后結(jié)論):
1.一開始搜,搜到這篇默蚌,如獲至寶啊冻晤,舊版本用的多了都沒發(fā)現(xiàn)Unity增加了這個(gè)API。立馬新開一個(gè)項(xiàng)目绸吸,調(diào)用一下鼻弧,跑一下?锦茁?攘轩?根本沒卵用!
2.想了想码俩,是不是設(shè)置哪邊需要勾選一下度帮,查了半天設(shè)置,谷歌和unity官方論壇的問答稿存,都沒人說這個(gè)問題笨篷。難道是我mac系統(tǒng)的問題?瓣履?率翅?
3.win上裝了個(gè)2019.4.5f1LTS版本,裝了三次才裝上袖迎,依舊沒有用冕臭!跟mac導(dǎo)出來之后一樣,調(diào)用了沒效果瓢棒,也沒報(bào)錯(cuò)log浴韭。這是逼著用戶去學(xué)安卓?
4.想想會(huì)不會(huì)是安卓版本問題脯宿,官網(wǎng)API上說最低設(shè)置API23也就是安卓6.0就行念颈,早就按這個(gè)設(shè)置了,前前后后找了三臺(tái)手機(jī)连霉,安卓10的榴芳,安卓7的都試過了,沒卵用6搴场?吒小!歉井!
5.于是想放棄了這個(gè)官方API查查有沒有插件柿祈,csdn上有個(gè),忒貴就不說了,評(píng)論也也有人踩過坑了躏嚎,無法商用蜜自,又是一頓谷歌,終于找到這個(gè)卢佣,真是大好人啊重荠,都不收錢的,還五星評(píng)論虚茶,也沒人說要設(shè)置什么的戈鲁。
6.于是下下來用,結(jié)果:依然沒用`诮小F诺睢!待笑!但是鸣皂, AndroidRuntimePermissions.OpenSettings();這個(gè)方法倒是意外地可以用,到此為止如果判斷為false暮蹂,再讓用戶去設(shè)置界面打開,并且用這個(gè)方法直接打開設(shè)置界面就能解決上面的問題了癌压。
但是仰泻,我是這么好說話的人嗎?動(dòng)態(tài)去調(diào)用RequestPermission開權(quán)限依舊不能用滩届,不能忍集侯,繼續(xù)查。
7.在安卓端安裝的時(shí)候發(fā)現(xiàn)帜消,如果勾選了othersetting中的write permission(寫入權(quán)限)為External(SDCard)的時(shí)候棠枉,安裝后選擇拒絕,之后不管調(diào)用官方的API還是插件的API都可以調(diào)用成功泡挺。同時(shí)在這個(gè)插件的github最后的描述中有這么一句話:

The following code requests WRITE_EXTERNAL_STORAGE permission (it must be declared in AndroidManifest)
下面的代碼請(qǐng)求WRITE_EXTERNAL_STORAGE權(quán)限(必須在AndroidManifest中聲明)

隨即吐血三升辈讶,被官方的API帶偏了都說什么動(dòng)態(tài)獲取權(quán)限不需要在AndroidManifest先聲明÷γǎ基本可以定性為AndroidManifest的問題贱除。
8.確定是AndroidManifest的問題后,就查如何改AndroidManifest媳溺,百度都說在Plugins/Android文件夾下面放一個(gè)AndroidManifest.xml文件導(dǎo)出的時(shí)候就會(huì)覆蓋Unity默認(rèn)的AndroidManifest月幌,實(shí)測(cè):不論是否勾選External(SDCard),都不行悬蔽。寫在AndroidManifest的權(quán)限都調(diào)不出來扯躺,更別說官方API調(diào)用了。
9.最后逼得沒有辦法了,去修改Unity自帶的默認(rèn)AndroidManifest录语,把要用的權(quán)限加進(jìn)去倍啥,這時(shí)候再去調(diào)用插件或者官方API,都可以調(diào)通了G瘴蕖6涸浴!失暂!



總結(jié):
1.AndroidRuntimePermissions這個(gè)插件彼宠,可以一鍵打開設(shè)置界面,還能獲得用戶的拒絕狀態(tài)(是拒絕弟塞,還是拒絕且不再提示)凭峡,這就比Unity自帶API強(qiáng)多了,因此決定直接使用此插件决记。
這是我整理后的AndroidRuntimePermissions插件
鏈接: https://pan.baidu.com/s/150F1vNC1j3AEHg7Lg2o5Rg 提取碼: 77h9
2.實(shí)測(cè)新版本(Unity2019.2+)存在AndroidManifest無法自動(dòng)整合的問題摧冀,在Plugins/Android文件夾下面放AndroidManifest文件根本不起作用(也可能是我自己菜)。因此使用此插件需修改Unity 默認(rèn)AndroidManifest文件系宫,文件路徑為:

Mac系統(tǒng):Unity.app同級(jí)目錄: PlaybackEngines/AndroidPlayer/Apk/
Win系統(tǒng):Unity安裝目錄下面(如果hub安裝的就有hub索昂,非hub安裝的就少hub這一層,可以桌面右鍵圖標(biāo)打開文件所在位置)C:\Program Files\Unity\Hub\Editor\2019.4.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\Apk

在文件中添加需要的權(quán)限扩借,如:

<uses-permission android:name="android.permission.CAMERA" />

在最后一行</manifest>上面加即可椒惨。(注意換項(xiàng)目要把權(quán)限拿去掉呀)
添加后:

<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
        <uses-permission android:name="android.permission.CAMERA" />
</manifest>

3.這時(shí)候再去調(diào)用官方的:

        Permission.RequestUserPermission("android.permission.CAMERA");
        Permission.RequestUserPermission(Permission.Camera);//這兩句一樣

或AndroidRuntimePermissions插件的:

        AndroidRuntimePermissions.RequestPermission("android.permission.CAMERA");


安卓權(quán)限分為兩種,一種是普通權(quán)限潮罪,一種是涉及用戶隱私的(如通訊錄康谆、相機(jī)、sd卡等)危險(xiǎn)權(quán)限嫉到。這里總結(jié)一下Unity常用到的危險(xiǎn)權(quán)限如下:

//android.permission.CAMERA 相機(jī)權(quán)限
//android.permission.RECORD_AUDIO 麥克風(fēng)權(quán)限
//android.permission.READ_EXTERNAL_STORAGE 讀儲(chǔ)存卡沃暗,直接在設(shè)置中勾選write permission為External(SDCard)
//android.permission.WRITE_EXTERNAL_STORAGE 寫儲(chǔ)存卡,直接在設(shè)置中勾選write permission為External(SDCard)

普通權(quán)限在AndroidManifest里寫都不需要用戶同意的何恶。



最終我把安卓ios的權(quán)限整合到一個(gè)插件里了:http://www.reibang.com/p/26f7293a635c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末孽锥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子导而,更是在濱河造成了極大的恐慌忱叭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件今艺,死亡現(xiàn)場(chǎng)離奇詭異韵丑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)虚缎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門撵彻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钓株,“玉大人,你說我怎么就攤上這事陌僵≈岷希” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵碗短,是天一觀的道長受葛。 經(jīng)常有香客問我,道長偎谁,這世上最難降的妖魔是什么总滩? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮巡雨,結(jié)果婚禮上闰渔,老公的妹妹穿的比我還像新娘。我一直安慰自己铐望,他們只是感情好冈涧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著正蛙,像睡著了一般督弓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乒验,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天咽筋,我揣著相機(jī)與錄音,去河邊找鬼徊件。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蒜危,可吹牛的內(nèi)容都是我干的虱痕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼辐赞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼部翘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起响委,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤新思,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赘风,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夹囚,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年邀窃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荸哟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鞍历,靈堂內(nèi)的尸體忽然破棺而出舵抹,到底是詐尸還是另有隱情,我是刑警寧澤劣砍,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布惧蛹,位于F島的核電站,受9級(jí)特大地震影響刑枝,放射性物質(zhì)發(fā)生泄漏香嗓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一仅讽、第九天 我趴在偏房一處隱蔽的房頂上張望陶缺。 院中可真熱鬧,春花似錦洁灵、人聲如沸饱岸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苫费。三九已至,卻和暖如春双抽,著一層夾襖步出監(jiān)牢的瞬間百框,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工牍汹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铐维,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓慎菲,卻偏偏與公主長得像嫁蛇,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子露该,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容