亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Android自定義權(quán)限使用總結(jié)

 更新時間:2018年07月16日 09:56:47   作者:BrightVan  
這篇文章主要介紹了詳解Android自定義權(quán)限使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、如何聲明自定義權(quán)限

在Manifest文件中使用Permission標(biāo)簽定義自己的權(quán)限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.bright.permission">

 <permission
 android:name="com.bright.permission.TEST"
 android:description=""
 android:permissionGroup="com.bright.permission-group.TEST"
 android:protectionLevel="signature" />
 ...
</manifest>

解釋下各個屬性:

  1. name,該標(biāo)簽就是權(quán)限的名字。
  2. description,該標(biāo)簽就是權(quán)限的介紹。
  3. permissionGroup,指定該權(quán)限的組。
  4. protectionLevel,指定保護級別。

Android將權(quán)限分為若干個保護級別,normal, dangerous, signature等。normal就是正常權(quán)限,該權(quán)限并不會給用戶或者設(shè)備的隱私帶來風(fēng)險;dangerous就是危險權(quán)限,該級別的權(quán)限通常會給用戶的數(shù)據(jù)或設(shè)備的隱私帶來風(fēng)險;signature指的是,只有相同簽名的應(yīng)用才能使用該權(quán)限。更多的介紹可以參考 protectionLevel 。

2、使用場景

自定義權(quán)限一般用于暴露出去的組件,提高安全性。Android允許一個應(yīng)用(客戶端)調(diào)用另一個應(yīng)用(服務(wù)端)的組件。那么作為服務(wù)端的應(yīng)用就得暴露相應(yīng)的組件,客戶端應(yīng)用才能訪問。當(dāng)然,在暴露的時候,權(quán)限是非必須的,如果暴露的組件沒有權(quán)限的話,那么任何的其他應(yīng)用都可以來調(diào)用該組件;如果該組件申請了權(quán)限,那么只有擁有該權(quán)限的應(yīng)用才能調(diào)用該組件。

<activity
 android:name=".TestA_Activity"
 android:exported="true"
 ... />

exported屬性就是代表是否暴露。該例子并沒有要求調(diào)用者需要申請權(quán)限,也就是說,任何的應(yīng)用就可以調(diào)用才組件。如果每個應(yīng)用都可以調(diào)用我們的組件的話,顯然是不安全的,我們希望只有使用了我們的權(quán)限的應(yīng)用,才能調(diào)用我們暴露的組件,我們可以在activity中加入permission屬性。

<activity
 android:name=".TestA_Activity"
 android:exported="true"
 ... />
Intent intent = new Intent();
intent.setClassName("com.bright.permission", "com.bright.permission.TestA_Activity");
startActivity(intent);

除了上面的方式,還可以通過intent-filter隱式啟動:

<activity
 android:name=".TestA_Activity"
 android:exported="true"
 ... >
 <intent-filter>
  <action android:name="com.bright.permission.action.TEST"/>
  <category android:name="android.intent.category.DEFAULT"/>
 </intent-filter>
</activity>
Intent intent = new Intent();
intent.setAction("com.bright.permission.action.TEST");
startActivity(intent);

3、自定義權(quán)限注意點

3.1、兩個應(yīng)用聲明了相同的權(quán)限

  1. Android不允許兩個不同的應(yīng)用定義一個相同名字的權(quán)限(除非這兩個應(yīng)用擁有相同的簽名),所以在命名的時候,需要特別注意。
  2. 擁有相同自定義權(quán)限的軟件必須使用同樣的簽名,否則后一個程序無法安裝。

3.2、和應(yīng)用安裝順序的關(guān)系。

場景:App A中聲明了權(quán)限PermissionA,App B中使用了權(quán)限PermissionA。

情況一:PermissionA的保護級別是normal或者dangerous

App B先安裝,App A后安裝,此時App B沒有獲取到PermissionA的權(quán)限。

即,此種情況下,權(quán)限必須先聲明再使用。即使App A和App B是相同的簽名。

情況二:PermissionA的保護級別是signature或者signatureOrSystem

App B先安裝,App A后安裝,如果App A和App B是相同的簽名,那么App B可以獲取到PermissionA的權(quán)限。如果App A和App B的簽名不同,則App B獲取不到PermissionA權(quán)限。

即,對于相同簽名的app來說,不論安裝先后,只要是聲明了權(quán)限,請求該權(quán)限的app就會獲得該權(quán)限。

這也說明了對于具有相同簽名的系統(tǒng)app來說,安裝過程不會考慮權(quán)限依賴的情況。安裝系統(tǒng)app時,按照某個順序(例如名字排序,目錄位置排序等)安裝即可,等所有app安裝完了,所有使用權(quán)限的app都會獲得權(quán)限。

3.3、權(quán)限的獲取以及版本兼容

Android6.0引入了動態(tài)權(quán)限,這個大家都知道了。前面說到的自定義的權(quán)限的安全級別android:protectionLevel會影響權(quán)限在Android6.0+系統(tǒng)的使用

  • android:protectionLevel="normal",不需要動態(tài)申請
  • android:protectionLevel="dangerous",需要動態(tài)申請

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何使用Flutter發(fā)布安卓應(yīng)用

    如何使用Flutter發(fā)布安卓應(yīng)用

    應(yīng)用開發(fā)完了,當(dāng)然需要發(fā)布了,下面來看看用 Flutter 開發(fā)的應(yīng)用如何發(fā)布,本文只關(guān)注 Android 版本的發(fā)布
    2021-05-05
  • Android View 完美實現(xiàn)EditText 在軟鍵盤上邊的示例

    Android View 完美實現(xiàn)EditText 在軟鍵盤上邊的示例

    本篇文章主要介紹了Android View 完美實現(xiàn)EditText 在軟鍵盤上邊的示例,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Android開發(fā)中遇到端口號占用問題解決方法

    Android開發(fā)中遇到端口號占用問題解決方法

    這篇文章主要介紹了Android開發(fā)中遇到端口號占用問題解決方法,本文給出了一個簡潔實用的方法來解決這個煩人的問題,需要的朋友可以參考下
    2015-06-06
  • Android實現(xiàn)仿excel數(shù)據(jù)表格效果

    Android實現(xiàn)仿excel數(shù)據(jù)表格效果

    這篇文章主要介紹了Android實現(xiàn)仿excel數(shù)據(jù)表格效果的實現(xiàn)代碼,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • 從源碼角度分析Android的消息機制

    從源碼角度分析Android的消息機制

    這篇文章主要介紹了從源碼角度分析Android的消息機制,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • 在android中如何用Java加載解析so

    在android中如何用Java加載解析so

    我們在android開發(fā)項目過程中都必然會更so加載打交道,那么so加載在系統(tǒng)中的順序和流程是怎樣的,我們就有必要對這個加載過程進行熟悉了解掌握
    2021-10-10
  • Mac Android Studio 3.0 Terminal 中文亂碼問題處理

    Mac Android Studio 3.0 Terminal 中文亂碼問題處理

    本文給大家分享的是在更新Android Studio 3.0之后,使用Terminal時,發(fā)現(xiàn) git log 命令查看歷史 log會亂碼,以及最后的解決方法,推薦給小伙伴們
    2017-11-11
  • Android 異步任務(wù)和消息機制面試題分析

    Android 異步任務(wù)和消息機制面試題分析

    這篇文章主要為大家介紹了Android 異步任務(wù)和消息機制面試題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Android activity堆棧及管理實例詳解

    Android activity堆棧及管理實例詳解

    這篇文章主要介紹了Android activity堆棧及管理實例詳解的相關(guān)資料,非常不錯,具有參考借鑒價值,對android activity堆棧相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-09-09
  • Android通過自定義Activity實現(xiàn)懸浮的Dialog詳解

    Android通過自定義Activity實現(xiàn)懸浮的Dialog詳解

    這篇文章主要給大家介紹了關(guān)于Android通過自定義Activity實現(xiàn)懸浮的Dialog的相關(guān)資料,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,感興趣的朋友們下面來一起看看吧。
    2017-05-05

最新評論