Android權(quán)限控制之自定義權(quán)限
天哪,這篇文章終于說道如何自定義權(quán)限了,左盼右盼,其實(shí)這個(gè)自定義權(quán)限相當(dāng)easy。為了方便敘述,我這邊會用到兩個(gè)app作為例子示范。
Permission App: used to define a new permission
這個(gè)作為定義權(quán)限的App,我稱之為Permission App.
Client App: used to access the specified activity of Permission App
這個(gè)作為訪問上述自定義權(quán)限的App,我稱之為Client App
先看如何寫Permission App
第一步
Permission App很簡單,它的任務(wù)就是定一個(gè)Permission,使用< permission>標(biāo)簽即可,我們假設(shè)內(nèi)容如下:
<permission android:name="custom.permission.STARTACTIVITY" android:description="@string/permission_dcr" android:protectionLevel=signatureOrSystem android:label="label"></permission>
第二步
然后在定一個(gè)Activity,這個(gè)Activity很簡單就是展示下一行字,如”Hello from Custiom Permission Activity!”這里就不詳述。
第三步
最重要的地方:我們需要為這個(gè)Activity指明訪問權(quán)限,權(quán)限即為我們剛申請的權(quán)限,這個(gè)需要同樣需要在AndroidManifest.xml文件中標(biāo)識,如下:
<activity
android:name="com.example.custompermission.MainActivity"
android:label="@string/app_name" android:permission="custom.permission.STARTACTIVITY">
</activity>
這個(gè)Activity于是就被打上了必須使用” custom.permission.STARTACTIVITY”權(quán)限才能訪問的印記。
接著寫Client App
至于如何寫Client App,那就so so so … easy了,只需兩步:
第一步
在AndroidManifest.xml文件中首先申請權(quán)限,如下:
<uses-permission android:name="custom.permission.STARTACTIVITY"/>
第二步
訪問Permission App表明需要該權(quán)限的Activity,代碼如下:
Intent in = new Intent();
in.setClassName("com.example.custompermission", "com.example.custompermission.MainActivity");
startActivity(in);
大功告成
我們可以測試下效果,首先安裝Permission App,然后接著安裝Client App,結(jié)果如下:
點(diǎn)擊之后
另外我曾經(jīng)在Android Permission權(quán)限機(jī)制引子提到過Protection Level問題,這邊我同樣測試下這個(gè)Protection Level,下面結(jié)果中Y表示可以正常訪問,N則表示不可以訪問。
需要注意的是,使用自定義Permission的activity如果設(shè)置了:
<activity
android:name="com.example.custompermission.MainActivity"
android:label="@string/app_name" android:permission="custom.permission.STARTACTIVITY">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
那就不能從Launcher中啟動該App,因?yàn)橹挥心愕腖auncher必須使用了uses-permission去請求獲取custom.permission.STARTACTIVITY權(quán)限,事實(shí)上你的Launcher是不具備已經(jīng)請求自定義權(quán)限的。
Launcher會報(bào):Application is not installed on your phone. 的錯(cuò)誤.
- Android掃描二維碼時(shí)出現(xiàn)用戶禁止權(quán)限報(bào)錯(cuò)問題解決辦法
- Android 操作系統(tǒng)獲取Root權(quán)限 原理詳細(xì)解析
- Android獲取ROOT權(quán)限的實(shí)例代碼
- Android點(diǎn)亮屏幕或屏幕解鎖和鎖定以及其他相關(guān)權(quán)限實(shí)現(xiàn)代碼
- Android權(quán)限操作之uses-permission詳解
- Android6.0動態(tài)申請權(quán)限所遇到的問題小結(jié)
- Android中Root權(quán)限獲取的簡單代碼
- Android需要提升權(quán)限的操作方法
- android編程判斷應(yīng)用是否具有某個(gè)權(quán)限的方法
- Android權(quán)限如何禁止以及友好提示用戶開通必要權(quán)限詳解
相關(guān)文章
Android開發(fā)之InetAddress基礎(chǔ)入門簡介與源碼實(shí)例
這篇文章主要介紹了Android開發(fā)之InetAddress基礎(chǔ)入門簡介,需要的朋友可以參考下2020-03-03Suspend函數(shù)與回調(diào)的互相轉(zhuǎn)換示例詳解
這篇文章主要為大家介紹了Suspend函數(shù)與回調(diào)的互相轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01使用Broadcast實(shí)現(xiàn)Android組件間的通信
這篇文章主要為大家詳細(xì)介紹了使用Broadcast實(shí)現(xiàn)Android組件間的通信,感興趣的小伙伴們可以參考一下2016-06-06Android Studio 在項(xiàng)目中引用第三方j(luò)ar包的方法
本文分步驟給大家介紹了Android Studio 在項(xiàng)目中引用第三方j(luò)ar包的方法,感興趣的朋友跟隨小編一起看看吧2018-09-09Android自定義豎直方向SeekBar多色進(jìn)度條
這篇文章主要介紹了Android自定義SeekBar實(shí)現(xiàn)多色豎直進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android ListView監(jiān)聽滑動事件的方法(詳解)
下面小編就為大家?guī)硪黄狝ndroid ListView監(jiān)聽滑動事件的方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Android HorizontalScrollView左右滑動效果
這篇文章主要為大家詳細(xì)介紹了Android HorizontalScrollView左右滑動效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04