權(quán)限概述

權(quán)限的目的是保護(hù)Android用戶的隱私。
Android應(yīng)用必須請(qǐng)求訪問(wèn)敏感用戶數(shù)據(jù)(如聯(lián)系人和短信)以及某些系統(tǒng)功能(如相機(jī)和互聯(lián)網(wǎng))的權(quán)限。根據(jù)功能,系統(tǒng)可能會(huì)自動(dòng)授予權(quán)限,或者可能會(huì)提示用戶批準(zhǔn)請(qǐng)求。
Android安全體系結(jié)構(gòu)的核心設(shè)計(jì)點(diǎn)是,默認(rèn)情況下,任何應(yīng)用程序都無(wú)權(quán)執(zhí)行任何會(huì)對(duì)其他應(yīng)用程序,操作系統(tǒng)或用戶產(chǎn)生負(fù)面影響的操作。這包括讀取或?qū)懭胗脩舻乃饺藬?shù)據(jù)(如聯(lián)系人或電子郵件),讀取或?qū)懭肫渌麘?yīng)用程序的文件,執(zhí)行網(wǎng)絡(luò)訪問(wèn),保持設(shè)備喚醒等等。
此頁(yè)面概述了Android權(quán)限的工作方式,包括:如何向用戶顯示權(quán)限,安裝時(shí)和運(yùn)行時(shí)權(quán)限請(qǐng)求之間的區(qū)別,權(quán)限的實(shí)施方式以及權(quán)限及其組的類型。如果您只想獲得使用應(yīng)用程序權(quán)限的操作指南,請(qǐng)參閱請(qǐng)求應(yīng)用程序權(quán)限。

權(quán)限批準(zhǔn)

應(yīng)用必須通過(guò)在應(yīng)用清單中包含<uses-permission>標(biāo)記來(lái)宣傳其所需的權(quán)限。 例如,需要發(fā)送SMS消息的應(yīng)用程序?qū)⒃谇鍐沃邪韵滦校?/p>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.snazzyapp">

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

    <application ...>
        ...
    </application>
</manifest>

如果您的應(yīng)用在其清單中列出了正常權(quán)限(即,不會(huì)對(duì)用戶的隱私或設(shè)備操作造成太大風(fēng)險(xiǎn)的權(quán)限),系統(tǒng)會(huì)自動(dòng)將這些權(quán)限授予您的應(yīng)用。
如果您的應(yīng)用在其清單中列出了危險(xiǎn)權(quán)限(即可能影響用戶隱私或設(shè)備正常運(yùn)行的權(quán)限),例如上面的SEND_SMS權(quán)限,則用戶必須明確同意授予這些權(quán)限。
有關(guān)正常和危險(xiǎn)權(quán)限的詳細(xì)信息,請(qǐng)參閱保護(hù)級(jí)別。

請(qǐng)求提示危險(xiǎn)權(quán)限

只有危險(xiǎn)權(quán)限才需要用戶同意。 Android要求用戶授予危險(xiǎn)權(quán)限的方式取決于用戶設(shè)備上運(yùn)行的Android版本以及應(yīng)用所針對(duì)的系統(tǒng)版本。

運(yùn)行時(shí)請(qǐng)求(Android 6.0或者更高)

如果設(shè)備運(yùn)行的是Android 6.0(API級(jí)別23)或更高版本,應(yīng)用程序的targetSdkVersion為23或更高,則在安裝時(shí)不會(huì)通知用戶任何應(yīng)用程序權(quán)限。 您的應(yīng)用必須要求用戶在運(yùn)行時(shí)授予危險(xiǎn)權(quán)限。 當(dāng)您的應(yīng)用請(qǐng)求權(quán)限時(shí),用戶會(huì)看到系統(tǒng)對(duì)話框(如圖1左側(cè)所示),告訴用戶您的應(yīng)用嘗試訪問(wèn)哪個(gè)權(quán)限組。 該對(duì)話框包括拒絕和允許按鈕。
如果用戶拒絕權(quán)限請(qǐng)求,則下次應(yīng)用請(qǐng)求權(quán)限時(shí),該對(duì)話框包含一個(gè)復(fù)選框,選中該復(fù)選框后,表示不希望再次提示用戶獲得權(quán)限(參見(jiàn)圖1,右)。

image

圖1.初始權(quán)限對(duì)話框(左)和次要權(quán)限請(qǐng)求以及關(guān)閉進(jìn)一步請(qǐng)求的選項(xiàng)(右)

如果用戶選中“永不再詢問(wèn)”框并點(diǎn)擊“拒絕”,則系統(tǒng)不再提示用戶以后是否嘗試請(qǐng)求相同的權(quán)限。
即使用戶授予您的應(yīng)用程序所請(qǐng)求的權(quán)限,您也不能總是依賴它。 用戶還可以選擇在系統(tǒng)設(shè)置中逐個(gè)啟用和禁用權(quán)限。 您應(yīng)該始終在運(yùn)行時(shí)檢查并請(qǐng)求權(quán)限以防止運(yùn)行時(shí)錯(cuò)誤(SecurityException)。
有關(guān)如何處理運(yùn)行時(shí)權(quán)限請(qǐng)求的詳細(xì)信息,請(qǐng)參閱請(qǐng)求應(yīng)用程序權(quán)限。

安裝時(shí)請(qǐng)求(Android 5.1.1或者更低)

如果設(shè)備運(yùn)行Android 5.1.1(API級(jí)別22)或更低版本,或者應(yīng)用程序的targetSdkVersion在任何版本的Android上運(yùn)行時(shí)為22或更低,系統(tǒng)會(huì)自動(dòng)要求用戶在安裝時(shí)為您的應(yīng)用授予所有危險(xiǎn)權(quán)限 - 時(shí)間(見(jiàn)圖2)。


image

圖2.安裝時(shí)權(quán)限對(duì)話框

如果用戶單擊“接受”,則會(huì)授予應(yīng)用程序請(qǐng)求的所有權(quán)限。 如果用戶拒絕權(quán)限請(qǐng)求,系統(tǒng)將取消應(yīng)用程序的安裝。
如果應(yīng)用更新包含對(duì)其他權(quán)限的需求,則會(huì)在更新應(yīng)用之前提示用戶接受這些新權(quán)限。
有關(guān)用于請(qǐng)求權(quán)限的建議用戶體驗(yàn)?zāi)J降母攀?,?qǐng)參閱應(yīng)用程序權(quán)限最佳實(shí)踐。
要了解如何檢查和請(qǐng)求用戶的權(quán)限,請(qǐng)參閱請(qǐng)求應(yīng)用程序權(quán)限。

可選硬件功能的權(quán)限

訪問(wèn)某些硬件功能(如藍(lán)牙或相機(jī))需要應(yīng)用程序權(quán)限。 但是,并非所有Android設(shè)備都具有這些硬件功能。 因此,如果您的應(yīng)用請(qǐng)求CAMERA權(quán)限,那么您還需要在清單中包含<uses-feature>標(biāo)記來(lái)聲明是否確實(shí)需要此功能。 例如:

<uses-feature android:name="android.hardware.camera" android:required="false" />

如果您為該功能聲明了android:required =“false”,那么Google Play允許您的應(yīng)用安裝在沒(méi)有此功能的設(shè)備上。 然后,您必須通過(guò)調(diào)用PackageManager.hasSystemFeature()檢查當(dāng)前設(shè)備是否在運(yùn)行時(shí)具有該功能,并在該功能不可用時(shí)正常禁用該功能。
如果您未提供<uses-feature>標(biāo)記,那么當(dāng)Google Play看到您的應(yīng)用請(qǐng)求相應(yīng)的權(quán)限時(shí),它會(huì)認(rèn)為您的應(yīng)用需要此功能。 因此,它會(huì)從沒(méi)有該功能的設(shè)備中過(guò)濾您的應(yīng)用,就像您在<uses-feature>標(biāo)記中聲明了android:required =“true”一樣。
有關(guān)詳細(xì)信息,請(qǐng)參閱Google Play和基于功能的過(guò)濾

權(quán)限執(zhí)行

權(quán)限不僅適用于請(qǐng)求系統(tǒng)功能。 應(yīng)用程序提供的服務(wù)可以強(qiáng)制執(zhí)行自定義權(quán)限,以限制誰(shuí)可以使用它們。 有關(guān)聲明自定義權(quán)限的詳細(xì)信息,請(qǐng)參閱定義自定義應(yīng)用程序權(quán)限。

活動(dòng)權(quán)限執(zhí)行

使用android:permission屬性對(duì)清單中的<activity>標(biāo)記應(yīng)用的權(quán)限限制了誰(shuí)可以啟動(dòng)該Activity。 在Context.startActivity()和Activity.startActivityForResult()期間檢查權(quán)限。 如果調(diào)用者沒(méi)有所需的權(quán)限,則從調(diào)用中拋出SecurityException。

服務(wù)權(quán)限執(zhí)行

使用android:permission屬性對(duì)清單中的<service>標(biāo)記應(yīng)用的權(quán)限限制誰(shuí)可以啟動(dòng)或綁定到關(guān)聯(lián)的服務(wù)。 在Context.startService(),Context.stopService()和Context.bindService()期間檢查權(quán)限。 如果調(diào)用者沒(méi)有所需的權(quán)限,則從調(diào)用中拋出SecurityException。

廣播權(quán)限執(zhí)行

使用android:permission屬性應(yīng)用于<receiver>標(biāo)簽的權(quán)限限制了誰(shuí)可以向關(guān)聯(lián)的BroadcastReceiver發(fā)送廣播。 在Context.sendBroadcast()返回后檢查權(quán)限,因?yàn)橄到y(tǒng)嘗試將提交的廣播傳遞給給定的接收者。 因此,權(quán)限失敗不會(huì)導(dǎo)致異常被拋回調(diào)用者; 它只是沒(méi)有提供意圖。
以同樣的方式,可以向Context.registerReceiver()提供權(quán)限,以控制誰(shuí)可以向編程注冊(cè)的接收者廣播。 另一方面,在調(diào)用Context.sendBroadcast()時(shí)可以提供權(quán)限以限制允許哪些廣播接收器接收廣播。
請(qǐng)注意,接收方和廣播公司都需要許可。 發(fā)生這種情況時(shí),必須通過(guò)兩個(gè)權(quán)限檢查才能將意圖傳遞給關(guān)聯(lián)目標(biāo)。 有關(guān)更多信息,請(qǐng)參閱限制具有權(quán)限的廣播。

Content Provider權(quán)限執(zhí)行

使用android:permission屬性對(duì)<provider>標(biāo)簽應(yīng)用的權(quán)限限制了誰(shuí)可以訪問(wèn)ContentProvider中的數(shù)據(jù)。 (內(nèi)容提供商有一個(gè)重要的額外安全設(shè)施,稱為URI權(quán)限,下面將對(duì)此進(jìn)行描述。)與其他組件不同,您可以設(shè)置兩個(gè)單獨(dú)的權(quán)限屬性:android:readPermission限制誰(shuí)可以從提供程序讀取,以及android: writePermission限制誰(shuí)可以寫(xiě)入它。請(qǐng)注意,如果提供程序受讀取和寫(xiě)入權(quán)限保護(hù),則僅保留寫(xiě)入權(quán)限并不意味著您可以從提供程序讀取。
首次檢索提供程序時(shí)將檢查權(quán)限(如果您沒(méi)有任何權(quán)限,則拋出SecurityException),以及在提供程序上執(zhí)行操作時(shí)。使用ContentResolver.query()需要保持讀取權(quán)限;使用ContentResolver.insert(),ContentResolver.update(),ContentResolver.delete()需要寫(xiě)入權(quán)限。在所有這些情況下,未保留所需的權(quán)限會(huì)導(dǎo)致從調(diào)用中拋出SecurityException。

URI權(quán)限

當(dāng)與內(nèi)容提供商一起使用時(shí),到目前為止描述的標(biāo)準(zhǔn)許可系統(tǒng)通常是不夠的。內(nèi)容提供商可能希望使用讀取和寫(xiě)入權(quán)限來(lái)保護(hù)自己,而其直接客戶端還需要將特定URI交給其他應(yīng)用程序以供其操作。
一個(gè)典型的例子是電子郵件應(yīng)用程序中的附件。應(yīng)該通過(guò)權(quán)限來(lái)保護(hù)對(duì)電子郵件的訪問(wèn),因?yàn)檫@是敏感的用戶數(shù)據(jù)。但是,如果向圖像查看器提供圖像附件的URI,則該圖像查看器不再具有打開(kāi)附件的權(quán)限,因?yàn)樗鼪](méi)有理由擁有訪問(wèn)所有電子郵件的權(quán)限。
此問(wèn)題的解決方案是per-URI權(quán)限:?jiǎn)?dòng)活動(dòng)或?qū)⒔Y(jié)果返回給活動(dòng)時(shí),調(diào)用者可以設(shè)置Intent.FLAG_GRANT_READ_URI_PERMISSION和/或Intent.FLAG_GRANT_WRITE_URI_PERMISSION。這授予接收活動(dòng)權(quán)限訪問(wèn)意圖中的特定數(shù)據(jù)URI,而不管它是否具有訪問(wèn)對(duì)應(yīng)于意圖的內(nèi)容提供者中的數(shù)據(jù)的任何許可。
此機(jī)制允許一種通用的功能樣式模型,其中用戶交互(例如打開(kāi)附件或從列表中選擇聯(lián)系人)驅(qū)動(dòng)臨時(shí)授予細(xì)粒度權(quán)限。這可以是將應(yīng)用程序所需的權(quán)限僅限于與其行為直接相關(guān)的權(quán)限的關(guān)鍵工具。
要構(gòu)建最安全的實(shí)現(xiàn),讓其他應(yīng)用程序?qū)δ趛or應(yīng)用程序中的操作負(fù)責(zé),您應(yīng)該以這種方式使用細(xì)粒度權(quán)限,并使用android:grantUriPermissions屬性或<grant-uri-permissions>標(biāo)記聲明您的應(yīng)用程序?qū)λ闹С帧?br> 可以在Context.grantUriPermission(),Context.revokeUriPermission()和Context.checkUriPermission()方法中找到更多信息。

其他權(quán)限執(zhí)行

任何對(duì)服務(wù)的調(diào)用都可以強(qiáng)制執(zhí)行任意細(xì)粒度的權(quán)限。 這是通過(guò)Context.checkCallingPermission()方法完成的。 使用所需的權(quán)限字符串進(jìn)行調(diào)用,并返回一個(gè)整數(shù),指示是否已將該權(quán)限授予當(dāng)前調(diào)用進(jìn)程。 請(qǐng)注意,這只能在您執(zhí)行來(lái)自其他進(jìn)程的調(diào)用時(shí)使用,通常是通過(guò)從服務(wù)發(fā)布的IDL接口或以其他方式執(zhí)行到另一個(gè)進(jìn)程。

還有許多其他有用的方法可以檢查權(quán)限。 如果您具有另一個(gè)進(jìn)程的進(jìn)程ID(PID),則可以使用Context.checkPermission()方法檢查針對(duì)該P(yáng)ID的權(quán)限。 如果您具有其他應(yīng)用程序的程序包名稱,則可以使用PackageManager.checkPermission()方法來(lái)確定該特定程序包是否已被授予特定權(quán)限。

自動(dòng)權(quán)限調(diào)整

隨著時(shí)間的推移,可能會(huì)向平臺(tái)添加新的限制,以便為了使用某些API,您的應(yīng)用必須請(qǐng)求以前不需要的權(quán)限。 由于現(xiàn)有應(yīng)用程序假定可以免費(fèi)訪問(wèn)這些API,因此Android可以將新的權(quán)限請(qǐng)求應(yīng)用于應(yīng)用程序的清單,以避免破壞新平臺(tái)版本上的應(yīng)用程序(從而“為您的應(yīng)用程序”授予“權(quán)限”)。 Android根據(jù)為targetSdkVersion屬性提供的值,決定應(yīng)用是否可能需要該權(quán)限。 如果該值低于添加權(quán)限的版本,則Android會(huì)添加權(quán)限。

例如,從API級(jí)別19開(kāi)始強(qiáng)制執(zhí)行READ_EXTERNAL_STORAGE權(quán)限,以限制對(duì)共享存儲(chǔ)空間的訪問(wèn)。 如果您的targetSdkVersion為18或更低,則此權(quán)限會(huì)在較新版本的Android上添加到您的應(yīng)用中。

警告:如果您的應(yīng)用自動(dòng)添加了權(quán)限,則Google Play上的應(yīng)用列表會(huì)列出這些附加權(quán)限,即使您的應(yīng)用可能實(shí)際上并不需要這些權(quán)限。 要避免這種情況并刪除您不需要的默認(rèn)權(quán)限,請(qǐng)始終將targetSdkVersion更新為盡可能高。 您可以在Build.VERSION_CODES文檔中查看每個(gè)版本添加了哪些權(quán)限。

保護(hù)級(jí)別

權(quán)限分為幾個(gè)保護(hù)級(jí)別。 保護(hù)級(jí)別會(huì)影響是否需要運(yùn)行時(shí)權(quán)限請(qǐng)求。
有三種保護(hù)級(jí)別會(huì)影響第三方應(yīng)用程序:正常,簽名和危險(xiǎn)權(quán)限。

正常權(quán)限

普通權(quán)限涵蓋應(yīng)用程序需要訪問(wèn)應(yīng)用程序沙箱外部數(shù)據(jù)或資源的區(qū)域,但用戶隱私或其他應(yīng)用程序操作的風(fēng)險(xiǎn)很小。 例如,設(shè)置時(shí)區(qū)的權(quán)限是正常權(quán)限。
如果應(yīng)用程序在其清單中聲明它需要正常權(quán)限,則系統(tǒng)會(huì)在安裝時(shí)自動(dòng)授予應(yīng)用程序該權(quán)限。 系統(tǒng)不會(huì)提示用戶授予正常權(quán)限,用戶也無(wú)法撤消這些權(quán)限。
從Android 9(API級(jí)別28)開(kāi)始,以下權(quán)限被歸類為PROTECTION_NORMAL:

簽名權(quán)限

系統(tǒng)會(huì)在安裝時(shí)授予這些應(yīng)用程序權(quán)限,但僅限于嘗試使用權(quán)限的應(yīng)用程序使用與定義權(quán)限的應(yīng)用程序相同的證書(shū)進(jìn)行簽名時(shí)。

注意:某些簽名權(quán)限不適用于第三方應(yīng)用程序。

從Android 8.1(API級(jí)別27)開(kāi)始,第三方應(yīng)用可以使用的以下權(quán)限歸類為PROTECTION_SIGNATURE:

危險(xiǎn)的權(quán)限

危險(xiǎn)權(quán)限涵蓋應(yīng)用程序需要涉及用戶私人信息的數(shù)據(jù)或資源的區(qū)域,或者可能會(huì)影響用戶存儲(chǔ)的數(shù)據(jù)或其他應(yīng)用程序的操作。 例如,讀取用戶聯(lián)系人的權(quán)限是一種危險(xiǎn)的權(quán)限。 如果應(yīng)用聲明它需要危險(xiǎn)權(quán)限,則用戶必須明確授予該應(yīng)用的權(quán)限。 在用戶批準(zhǔn)該權(quán)限之前,您的應(yīng)用無(wú)法提供依賴該權(quán)限的功能。
要使用危險(xiǎn)權(quán)限,您的應(yīng)用必須提示用戶在運(yùn)行時(shí)授予權(quán)限。 有關(guān)如何提示用戶的更多詳細(xì)信息,請(qǐng)參閱危險(xiǎn)權(quán)限的請(qǐng)求提示。
有關(guān)危險(xiǎn)權(quán)限的列表,請(qǐng)參閱下面的表1。

特殊權(quán)限

有一些權(quán)限不像正常和危險(xiǎn)的權(quán)限。 SYSTEM_ALERT_WINDOW和WRITE_SETTINGS特別敏感,因此大多數(shù)應(yīng)用程序不應(yīng)使用它們。 如果應(yīng)用程序需要其中一個(gè)權(quán)限,則必須在清單中聲明權(quán)限,并發(fā)送請(qǐng)求用戶授權(quán)的意圖。 系統(tǒng)通過(guò)向用戶顯示詳細(xì)的管理屏幕來(lái)響應(yīng)意圖。
有關(guān)如何請(qǐng)求這些權(quán)限的詳細(xì)信息,請(qǐng)參閱SYSTEM_ALERT_WINDOW和WRITE_SETTINGS參考條目。
可以在Manifest.permission中找到Android系統(tǒng)提供的所有權(quán)限。

權(quán)限組

權(quán)限分組到與設(shè)備功能或功能相關(guān)的組中。 在此系統(tǒng)下,權(quán)限請(qǐng)求在組級(jí)別處理,單個(gè)權(quán)限組對(duì)應(yīng)于應(yīng)用程序清單中的多個(gè)權(quán)限聲明。 例如,SMS組包括READ_SMS和RECEIVE_SMS聲明。 以這種方式對(duì)權(quán)限進(jìn)行分組使用戶能夠做出更有意義和更明智的選擇,而不會(huì)被復(fù)雜和技術(shù)許可請(qǐng)求所淹沒(méi)。


image

所有危險(xiǎn)的Android權(quán)限都屬于權(quán)限組。無(wú)論保護(hù)級(jí)別如何,任何權(quán)限都可以屬于權(quán)限組。但是,如果權(quán)限是危險(xiǎn)的,則權(quán)限組僅影響用戶體驗(yàn)。
如果設(shè)備運(yùn)行的是Android 6.0(API級(jí)別23)且應(yīng)用的targetSdkVersion為23或更高,則當(dāng)您的應(yīng)用請(qǐng)求危險(xiǎn)權(quán)限時(shí),以下系統(tǒng)行為適用:

  • 如果應(yīng)用程序當(dāng)前在權(quán)限組中沒(méi)有任何權(quán)限,系統(tǒng)會(huì)向用戶顯示描述應(yīng)用程序要訪問(wèn)的權(quán)限組的權(quán)限請(qǐng)求對(duì)話框。該對(duì)話框未描述該組中的特定權(quán)限。例如,如果某個(gè)應(yīng)用請(qǐng)求READ_CONTACTS權(quán)限,系統(tǒng)對(duì)話框只會(huì)說(shuō)該應(yīng)用需要訪問(wèn)該設(shè)備的聯(lián)系人。如果用戶授予批準(zhǔn),系統(tǒng)將為應(yīng)用程序提供其請(qǐng)求的權(quán)限。
  • 如果應(yīng)用程序已在同一權(quán)限組中被授予其他危險(xiǎn)權(quán)限,則系統(tǒng)會(huì)立即授予權(quán)限,而不與用戶進(jìn)行任何交互。例如,如果應(yīng)用程序先前已請(qǐng)求并已獲得READ_CONTACTS權(quán)限,然后它請(qǐng)求WRITE_CONTACTS,則系統(tǒng)會(huì)立即授予該權(quán)限,而不向用戶顯示權(quán)限對(duì)話框。

警告:未來(lái)版本的Android SDK可能會(huì)將特定權(quán)限從一個(gè)組移動(dòng)到另一個(gè)組。 因此,請(qǐng)不要將應(yīng)用程序的邏輯基于這些權(quán)限組的結(jié)構(gòu)。
例如,READ_CONTACTS與Android 8.1(API級(jí)別27)中的WRITE_CONTACTS屬于同一權(quán)限組。 如果您的應(yīng)用程序請(qǐng)求READ_CONTACTS權(quán)限,然后請(qǐng)求WRITE_CONTACTS權(quán)限,請(qǐng)不要假設(shè)系統(tǒng)可以自動(dòng)授予WRITE_CONTACTS權(quán)限。

如果設(shè)備運(yùn)行的是Android 5.1(API級(jí)別22)或更低版本,或者應(yīng)用程序的targetSdkVersion為22或更低,系統(tǒng)會(huì)要求用戶在安裝時(shí)授予權(quán)限。 系統(tǒng)再一次告訴用戶應(yīng)用程序需要哪些權(quán)限組,而不是單個(gè)權(quán)限。 例如,當(dāng)應(yīng)用程序請(qǐng)求READ_CONTACTS時(shí),安裝對(duì)話框?qū)⒘谐觥奥?lián)系人”組。 當(dāng)用戶接受時(shí),只有READ_CONTACTS權(quán)限被授予應(yīng)用程序。

注意:即使用戶已在同一組中授予了其他權(quán)限,您的應(yīng)用仍需要明確請(qǐng)求其所需的每個(gè)權(quán)限。 此外,將權(quán)限分組到組中可能會(huì)在將來(lái)的Android版本中發(fā)生變化。 您的代碼不應(yīng)具有依賴于同一組中的一組特定權(quán)限的邏輯。

表1.危險(xiǎn)權(quán)限和權(quán)限組。


1.png
2.png

查看應(yīng)用的權(quán)限

您可以使用“設(shè)置”應(yīng)用程序和shell命令adb shell pm list permissions查看當(dāng)前在系統(tǒng)中定義的所有權(quán)限。 要使用“設(shè)置”應(yīng)用,請(qǐng)轉(zhuǎn)到“設(shè)置”>“應(yīng)用”。 選擇一個(gè)應(yīng)用并向下滾動(dòng)以查看該應(yīng)用使用的權(quán)限。 對(duì)于開(kāi)發(fā)人員,adb'-s'選項(xiàng)以與用戶看到的方式類似的形式顯示權(quán)限:

$ adb shell pm list permissions -s All Permissions: Network communication:
 view Wi-Fi state, create Bluetooth connections, full internet access, 
view network state Your location: access extra location provider commands, 
fine (GPS) location, mock location sources for testing, 
coarse (network-based) location Services that cost you money: 
send SMS messages, directly call phone numbers ...

在模擬器或測(cè)試設(shè)備上安裝應(yīng)用程序時(shí),您還可以使用adb -g選項(xiàng)自動(dòng)授予所有權(quán)限:

$ adb shell install -g MyApp.apk
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 權(quán)限的目的是保護(hù)Android用戶的隱私。Android應(yīng)用訪問(wèn)敏感的用戶數(shù)據(jù)(如聯(lián)系人和短信)以及某些系統(tǒng)功能(...
    鹿小純0831閱讀 1,377評(píng)論 0 1
  • 權(quán)限概述 權(quán)限的目的是保護(hù)Android用戶的隱私。Android應(yīng)用程序必須請(qǐng)求訪問(wèn)敏感用戶數(shù)據(jù)(如聯(lián)系人和短信...
    WilsonYoung閱讀 1,356評(píng)論 0 0
  • 前言 Android 是一個(gè)權(quán)限分隔的操作系統(tǒng),其中每個(gè)應(yīng)用都有其獨(dú)特的系統(tǒng)標(biāo)識(shí)(Linux 用戶 ID 和組 I...
    清明捉鬼閱讀 1,024評(píng)論 0 2
  • AndroidManifest.xml文件安全探索 secbang.com simeon 最近在做一些apk的安全...
    simeon2015閱讀 2,420評(píng)論 0 1
  • 系統(tǒng)權(quán)限 Android 是一個(gè)權(quán)限分隔的操作系統(tǒng),其中每個(gè)應(yīng)用都有其獨(dú)特的系統(tǒng)標(biāo)識(shí)(Linux 用戶 ID 和組...
    進(jìn)攻的螞蟻閱讀 2,264評(píng)論 0 0

友情鏈接更多精彩內(nèi)容