Android許可權筆記

2021-08-03 23:40:11 字數 2344 閱讀 999

1、android 是乙個許可權分隔的作業系統,其中每個應用都有其獨特的系統標識(linux 使用者 id 和組 id)。

在安裝時,android 為每個軟體包提供唯一的 linux 使用者 id。

由於在程序級實施安全性,因此任何兩個軟體包的**通常都不能在同一程序中執行,因為它們需要作為不同的 linux 使用者執行。您可以在每個軟體包的 androidmanifest.xml 的 manifest 標記中使用 shareduserid 屬性,為它們分配相同的使用者 id。這樣做以後,兩個軟體包將被視為同乙個應用,具有相同的使用者 id 和檔案許可權。

2、應用儲存的任何資料都會被分配該應用的使用者id,並且其他軟體包通常無法訪問這些資料。使用 getsharedpreferences(string, int)、openfileoutput(string,int) 或 openorcreatedatabase(string, int, sqlitedatabase.curso***ctory) 建立新檔案時,可以使用mode_world_readable 和/或 mode_world_writeable 標記允許任何其他軟體包讀取/寫入檔案。

3、新增許可權:將元素置於應用清單manifest中,作為頂級 元素的子項。

4、系統許可權分為兩類:正常許可權和危險許可權:

正常許可權不會直接給使用者隱私權帶來風險。如果您的應用在其清單中列出了正常許可權,系統將自動授予該許可權。

危險許可權會授予應用訪問使用者機密資料的許可權。如果您列出了危險許可權,則使用者必須明確批准您的應用使用這些許可權(參見5)。

5、如果裝置執行的是 android 5.1或更低版本,或者應用的目標 sdk 為 22 或更低:如果應用在manifest中列出了危險許可權,則使用者必須在安裝應用時授予此許可權;如果他們不授予此許可權,系統根本不會安裝應用。

如果裝置執行的是 android 6.0 或更高版本,或者應用的目標 sdk 為 23 或更高:如果應用在manifest中列出了危險許可權,則它必須在執行時請求其需要的每項危險許可權。使用者可以授予或拒絕每項許可權,且即使使用者拒絕許可權請求,應用仍可以繼續執行有限的功能。

6、檢查許可權:contextcompat.checkselfpermission(,):

context.checkcallingpermission (stringpermission):檢查呼叫該方法的程序是否有該許可權;

context.checkpermission (string permission,int pid, int uid):檢查系統中特定的pid,uid是否有該許可權;

packagemanager.checkpermission (stringpermname, string pkgname):檢查特定的包是否有該許可權;

以上檢查許可權的方法返回乙個int,如果應用具有此許可權,那麼方法將返回 packagemanager.permission_granted,如果應用不具有此許可權,那麼方法將返回permission_denied。

7、許可權請求及響應

如果應用尚無所需的許可權,則應用必須呼叫乙個 requestpermissions() 方法,以請求適當的許可權。

申請許可權:activitycompat.requestpermissions( thisactivity, new  string,my_permissions_request_read_contacts);

當使用者響應時,系統將呼叫應用的 onrequestpermissionsresult() 方法,向其傳遞使用者響應。因此應用程式必須實現onrequestpermissionsresult(int requestcode, string permissions,  int grantresults)方法。

8、自動許可權調整:android 將根據為targetsdkversion 屬性提供的值決定應用是否需要許可權。如果該值低於在其中新增許可權的版本,則 android 會自動新增該許可權。

9、許可權組:如果裝置執行的是 android6.0(api 級別 23),並且應用的 targetsdkversion 是 23 或更高版本,則當使用者請求危險許可權時,系統顯示的對話方塊說明了您的應用需要訪問的許可權組,它不會列出具體許可權。使用者只需要為每個許可權組授予一次許可權。

10、此外,可以在所需的元件上使用android:permission 屬性,限制訪問系統或應用的全部元件。

activity 許可權(應用於標記)限制誰可以啟動相關的 activity。

service 許可權(應用於標記)限制誰可以啟動或繫結到相關的服務。

broadcastreceiver 許可權(應用於標記)限制誰可以傳送廣播給相關的接收方。

contentprovider 許可權(應用於標記)限制誰可以訪問 contentprovider 中的資料。

11、自定義許可權:在androidmanifest.xml中使用乙個或多個元素宣告,可在元件上使用自定義許可權。

Android訪問許可權

android開發應用程式時,如果應用程式需要訪問網路許可權,需要在 androidmanifest.xml 中加入以下 同樣的如果用到其它的許可權,也需要作出宣告,部分許可權列表如下 android.permission.access checkin properties 允許讀寫訪問 prope...

android 檔案許可權

1 正常許可權 就是那個什麼 rwxrwxrwx 的東東,共十位。第一位 表示檔案,d表示資料夾,l表示連線。二三四 所有者的許可權。五六七 所在群組的許可權。至今我也沒搞清楚群組是個什麼東東。十 其他使用者許可權。r表示寫許可權,w表示讀許可權,x表示可執行許可權,表示沒許可權。用數字表示法,r ...

Android動態許可權

請看這裡 tip1 判定是否有許可權 checkselfpermission tip2 如果沒有許可權,彈出dialog給使用者選擇 requestpermission 第二個引數code與onrequestpermissionresult 方法中的code對應 if checkselfpermis...