從 Android 6.0 開始,按照是否需要動態申請分為 普通權限 和 特殊權限
創新互聯公司是少有的成都網站設計、網站建設、營銷型企業網站、微信小程序開發、手機APP,開發、制作、設計、買鏈接、推廣優化一站式服務網絡公司,公司2013年成立,堅持透明化,價格低,無套路經營理念。讓網頁驚喜每一位訪客多年來深受用戶好評
特殊權限 需要程序運行時申請并通過之后才能使用,或者程序安裝為系統應用或系統簽名。
注意:
1、動態申請也需要在清單文件中配置(AndroidMenifest.xml)
2、權限是分組的,同一組的權限申請其中一個,同組的權限就全部都申請了
特殊權限共有 9 組:
9 組具體權限列表:
普通權限在清單文件配置(AndroidMenifest.xml)即可使用
(1)在 AndroidMenifest.xml 清單文件中申請
(2)單個申請
(2)批量申請
(3)回調處理
我們知道 Android 應用程序是沙箱隔離的,每個應用都有一個只有自己具有讀寫權限的專用數據目錄。但是如果應用要訪問別人的組件或者一些設備上全局可訪問的資源,這時候權限機制就能系統化地規范并強制各類應用程序的行為準則。
Android 安全性概覽
在 Android 中,一個權限,本質上是一個字符串,一個可以表示執行特定操作的能力的字符串。比如說:訪問 SD 卡的能力,訪問通訊錄的能力,啟動或訪問一個第三方應用中的組件的能力。 權限被授予了之后,首先會在內存和本地中有記錄,這在調用系統binder服務和其他應用組件時做鑒權依據,比如調用系統binder服務時會通過Binder.getCallingUid()拿到調用者的Uid,而Uid一般都是與應用包名一一對應的,再拿這個Uid到PMS里去查這個應用對應的權限。 其次會按被授予的權限將應用分到某個組。 可以參考
自定義權限的應用場景在于限制其它應用對本應用四大組件的訪問。具體用法可以參考
pm list permissions -f 命令可以詳細查看 Android 所有預定義的權限。
更詳細的權限信息參考
可以看到一個權限的信息包括:定義的包名、標簽、描述、 權限組 和 保護級別 。
權限根據設備的功能或特性分為多個組。如果應用已在相同權限組中被授予另一危險權限,系統將立即授予該權限,如READ_CONTACTS和WRITE_CONTACTS。
SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 由于其特殊性,其申請方式與其它權限都不同。
其授予流程如下:
(關于 AppOpsManager 是什么可以參考: )
這里簡要分析下ActivityCompat#requestPermissions的流程:
更詳細的權限授予流程源碼分析可以參考:
普通權限: 清單文件中聲明即可。
危險權限: 方式一: pm grant application_package android.permission.CHANGE_CONFIGURATION 方式二:appops set application_package permission_num 0/1
appops可以授予的權限參考 android.app.AppOpsManager 中的聲明
系統簽名權限: 方式一:將app遷移到system/priv-app目錄中。 方式二:看不懂,參考
android 4.4 訪問sd卡需要申請權限。 您的應用在 Android 4.4 上運行時無法讀取外部存儲空間上的共享文件,除非您的應用具有 READ_EXTERNAL_STORAGE 權限。也就是說,沒有此權限,您無法再訪問 getExternalStoragePublicDirectory() 返回的目錄中的文件。但是,如果您僅需要訪問 getExternalFilesDir() 提供的您的應用特有目錄,那么,您不需要 READ_EXTERNAL_STORAGE `權限。
android 6.0 運行時權限。 此版本引入了一種新的權限模式,如今,用戶可直接在運行時管理應用權限。這種模式讓用戶能夠更好地了解和控制權限,同時為應用開發者精簡了安裝和自動更新過程。用戶可為所安裝的各個應用分別授予或撤銷權限。 對于以 Android 6.0(API 級別 23)或更高版本為目標平臺的應用,請務必在運行時檢查和請求權限。要確定您的應用是否已被授予權限,請調用新增的 checkSelfPermission() 方法。要請求權限,請調用新增的 requestPermissions() 方法。即使您的應用并不以 Android 6.0(API 級別 23)為目標平臺,您也應該在新權限模式下測試您的應用。 如需了解有關在您的應用中支持新權限模式的詳情,請參閱 使用系統權限 。如需了解有關如何評估新模式對應用的影響的提示,請參閱 權限最佳做法 。
android 7.+ 應用間共享文件要使用FileProvider。 對于面向 Android 7.0 的應用,Android 框架執行的 StrictMode API 政策禁止在您的應用外部公開 。如果一項包含文件 URI 的 intent 離開您的應用,則應用出現故障,并出現 FileUriExposedException 異常。 要在應用間共享文件,您應發送一項 content:// URI,并授予 URI 臨時訪問權限。進行此授權的最簡單方式是使用 FileProvider `類。如需了解有關權限和共享文件的詳細信息,請參閱 共享文件 。
android 8.+
同一權限組的權限在被授予了之后也需要顯式的再申請一次。
在 Android 8.0 之前,如果應用在運行時請求權限并且被授予該權限,系統會錯誤地將屬于同一權限組并且在清單中注冊的其他權限也一起授予應用。 對于針對 Android 8.0 的應用,此行為已被糾正。系統只會授予應用明確請求的權限。然而,一旦用戶為應用授予某個權限,則所有后續對該權限組中權限的請求都將被自動批準。 例如,假設某個應用在其清單中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 。應用請求 READ_EXTERNAL_STORAGE ,并且用戶授予了該權限。如果該應用針對的是 API 級別 24 或更低級別,系統還會同時授予 WRITE_EXTERNAL_STORAGE ,因為該權限也屬于同一 STORAGE 權限組并且也在清單中注冊過。如果該應用針對的是 Android 8.0,則系統此時僅會授予 READ_EXTERNAL_STORAGE ;不過,如果該應用后來又請求 WRITE_EXTERNAL_STORAGE ,則系統會立即授予該權限,而不會提示用戶。
android 9
隱私權限變更。
為了增強用戶隱私,Android 9 引入了若干行為變更,如限制后臺應用訪問設備傳感器、限制通過 Wi-Fi 掃描檢索到的信息,以及與通話、手機狀態和 Wi-Fi 掃描相關的新權限規則和權限組。
android 10
隱私權變更。
外部存儲訪問權限范圍限定為應用文件和媒體,在后臺運行時訪問設備位置信息需要權限,針對從后臺啟動 Activity 的限制等。
android 11
隱私權限變更。
更詳細的版本變更請參考
支持原作者 :
軟硬件環境
ubuntu 14.04
Android studio2.1.2
Android 5.1.1
前言
一般的Android應用程序,在安裝后,程序只能訪問/data/data/${程序包名}下的數據,如常見的SharedPreferences、database等。
而如果想讓app訪問其它地方的資源時,就必須要獲取更高的權限,像system或者root。本文完成system權限的獲取,實際上一般的應用有system的權限基本上也夠了。
修改apk內的AndroidManifest.xml
在app中的AndroidManifest.xml文件中的manifest標簽中加入
android:sharedUserId="android.uid.system"
APP工程生成apk文件
android studio或者eclipse自動就幫你生成好了
給apk文件進行簽名
這里分兩種情況,一種是廠商,有android系統源碼,既可以把app源碼導入到android源碼中,也可以單獨完成簽名。第二種是你僅僅是做應用的,拿不到廠商的source code,而且
這種情況也相當普遍,怎么辦?別著急,我們今天就來解決這個問題。
簽名需要的幾個文件
這個你必須找廠商要,signapk.jar、platform.x509.pem、platform.pk8,如果你有source code,signapk.jar存放在prebuilts/sdk/tools/,platform.* 兩個key文件存放在build/target/product/security/下
簽名具體命令
java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk
制作新的image文件
如果你的應用需要預置到android系統中,將signed.apk導入到android源碼目錄中(一般是out/target/product/${hardware}/system/app/下),編譯生成新的
system.img,再燒錄到目標板中。如果不需要預置,那就直接adb install好了。
測試
待系統啟動后adb shell到板子上,ls -l查看app安裝目錄(/data/data/${程序包名})的權限,看看是不是變成system:system了。
網站題目:android應用權限,android權限限制
網頁URL:http://m.kartarina.com/article2/dseshoc.html
成都網站建設公司_創新互聯,為您提供軟件開發、云服務器、網站建設、響應式網站、定制網站、微信小程序
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯