1. 程式人生 > 其它 >Android許可權使用注意事項

Android許可權使用注意事項

技術標籤:開發經驗許可權

文章目錄

一、前言

隨著Android系統的升級以及整個行業對使用者隱私的保護,在開發中隨意使用一些高危許可權同時使用者隱私保護政策中又沒有對相關的許可權進行說明,被公安部檢測到或者一些上架的應用市場檢測到後,將會面臨約談以及下架的風險。因此在開發中使用一些高危許可權的時候一定要做好相關的隱私保護政策說明;針對第三方的SDK的使用,需要做一些安全措施,避免打包的時候將一些沒有使用的高危許可權合併到Manifest檔案中。

二、高危許可權

2.1官網列出的危險許可權組及許可權說明

許可權組許可權說明
CALENDARREAD_CALENDAR讀取使用者日曆資料
WRITE_CALENDAR向用戶日曆寫入資料
CAMERACAMERA訪問裝置攝像頭
CONTACTSREAD_CONTACTS讀取使用者聯絡人資料
WRITE_CONTACTS寫入聯絡人資料
GET_ACCOUNTS允許訪問帳戶服務中的帳戶列表(6.0以後版本不需要改許可權)
LOCATIONACCESS_FINE_LOCATION訪問精確位置
ACCESS_COARSE_LOCATION訪問大致位置
PHONEREAD_PHONE_STATE
CALL_PHONE
READ_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS
MICROPHONERECORD_AUDIO
SENSORSBODY_SENSORS
SMSSEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
STORAGEREAD_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE

2.2如何避免一些不必要的許可權出現

這裡藉助tools:node="remove"屬性,在gradle編譯合併manifest檔案的時候,可將帶有tools:node="remove"屬性的許可權不新增到AndroidManifest.xml檔案中,具體使用如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.permission.demo">   
        <!--讀取聯絡人許可權-->
        <uses-permission android:name="android.permission.READ_CONTACTS" tools:node="remove"/>
        ......
 
</manifest>

Note: 需要移除的許可權tools:node="remove"屬性設定到主Moduel中。

三、清單檔案合併

清單檔案的合併說明官網已經給出了很詳細的介紹,這裡就不在進行說明,官網多個清單檔案合併介紹

這裡說一下實際專案中如何查詢自己開發中沒有用到的許可權,最後打包後卻存在的許可權,編譯完成後,都會輸出一些日誌資訊,請看下圖:
image

該檔案為清單檔案的合併日誌資訊,我們可在該檔案中查詢一些許可權的來源。比如要檢視android.permission.INTERNET許可權,開啟改檔案,輸入android.permission.INTERNET許可權,即可定位到許可權新增和合並的來源資訊,如下所示:

......

uses-permission#android.permission.INTERNET
ADDED from D:******\src\main\AndroidManifest.xml:29:5-67
MERGED from [:folioreader] D:******\folioreader\build\intermediates\library_manifest\debug\AndroidManifest.xml:12:5-67
MERGED from [:folioreader] D:******\folioreader\build\intermediates\library_manifest\debug\AndroidManifest.xml:12:5-67
MERGED from [:alipaySdk-15.6.4-20190611174359:] C:\Users\******\.gradle\caches\transforms-2\files-2.1\5f403b8c88f75e1b3844c0b0f1dc7d1d\alipaySdk-15.6.4-20190611174359\AndroidManifest.xml:18:5-67
MERGED from [:alipaySdk-15.6.4-20190611174359:] C:\Users\******\.gradle\caches\transforms-2\files-2.1\5f403b8c88f75e1b3844c0b0f1dc7d1d\alipaySdk-15.6.4-20190611174359\AndroidManifest.xml:18:5-67
MERGED from [jameson.io.library:library:0.0.1] C:\Users\******\.gradle\caches\transforms-2\files-2.1\cfbb8ced1977c328819f5740ba052c72\library-0.0.1\AndroidManifest.xml:11:5-67
MERGED from [jameson.io.library:library:0.0.1] C:\Users\******\.gradle\caches\transforms-2\files-2.1\cfbb8ced1977c328819f5740ba052c72\library-0.0.1\AndroidManifest.xml:11:5-67
MERGED from [com.tencent.imsdk:imsdk:4.6.56] C:\Users\******\.gradle\caches\transforms-2\files-2.1\a33560e1ac8f56ee5e7b8e2c697409a8\jetified-imsdk-4.6.56\AndroidManifest.xml:12:5-67
MERGED from [com.tencent.imsdk:imsdk:4.6.56] C:\Users\******\.gradle\caches\transforms-2\files-2.1\a33560e1ac8f56ee5e7b8e2c697409a8\jetified-imsdk-4.6.56\AndroidManifest.xml:12:5-67
MERGED from [com.sensorsdata.analytics.android:SensorsAnalyticsSDK:3.1.5] C:\Users\******\.gradle\caches\transforms-2\files-2.1\cc0316e6c89c838795f5345edd4e2f70\jetified-SensorsAnalyticsSDK-3.1.5\AndroidManifest.xml:13:5-67
MERGED from [com.sensorsdata.analytics.android:SensorsAnalyticsSDK:3.1.5] C:\Users\******\.gradle\caches\transforms-2\files-2.1\cc0316e6c89c838795f5345edd4e2f70\jetified-SensorsAnalyticsSDK-3.1.5\AndroidManifest.xml:13:5-67
MERGED from [cn.jiguang.sdk:jpush:3.4.1] C:\Users\******\.gradle\caches\transforms-2\files-2.1\d4d9d1b2409af9a8064fb9426c20e38c\jpush-3.4.1\AndroidManifest.xml:18:5-67
MERGED from [cn.jiguang.sdk:jpush:3.4.1] C:\Users\******\.gradle\caches\transforms-2\files-2.1\d4d9d1b2409af9a8064fb9426c20e38c\jpush-3.4.1\AndroidManifest.xml:18:5-67
MERGED from [cn.jiguang.sdk:jverification:2.5.3] C:\Users\******\.gradle\caches\transforms-2\files-2.1\d689479c7ab7939fbcec882733686a02\jverification-2.5.3\AndroidManifest.xml:12:5-67
MERGED from [cn.jiguang.sdk:jverification:2.5.3] C:\Users\******\.gradle\caches\transforms-2\files-2.1\d689479c7ab7939fbcec882733686a02\jverification-2.5.3\AndroidManifest.xml:12:5-67
MERGED from [:multimedia-processor-online-release:] C:\Users\******\.gradle\caches\transforms-2\files-2.1\cdb389799ff9009eced706325d878d64\jetified-multimedia-processor-online-release\AndroidManifest.xml:14:5-67
MERGED from [:multimedia-processor-online-release:] C:\Users\******\.gradle\caches\transforms-2\files-2.1\cdb389799ff9009eced706325d878d64\jetified-multimedia-processor-online-release\AndroidManifest.xml:14:5-67
MERGED from [net.butterflytv.utils:rtmp-client:3.0.1] 

......

四,最後

隨著工信部對APP的監管越來越嚴格,APP內部獲取使用者的一些隱私資料將會被嚴令禁止,我們必須要在使用許可權之前獲得使用者的授權,針對一些第三方SDK在Application初始化的時候就開始使用者個人隱私資料,我們的會將對應的初始化移到使用者同意隱私政策協議後再初始化,同時要在隱私政策協議中說明第三方SDK獲取使用者個人隱私政策的目的。