Android的權限聲明

原文作者:Google
原文地址:http://developer.android.com/intl/zh-cn/training/permissions/declaring.html
原文版權:Creative Commons 2.5 Attribution License
譯文作者:Jianan - [email protected]
版本信息:本文基於2016-04-27版本翻譯
譯文版權:CC BY-NC-ND 4.0,允許複製轉載,但必須保留譯文作者署名及譯文鏈接,不得演繹和用於商業用途


前言


每一個android app都運行在一個限制訪問的沙盒中。如果一個app需要訪問它所在沙盒之外的資源和信息,那麼這個app就需要聲明適當的權限。這個權限聲明要求將你的app需要的權限全部列舉在App的manifest文件中。
根據權限不同的隱私敏感程度級別,系統可能會自動授予該權限,也有可能需要請求設備用戶授權才能獲取該權限。例如,如果你的app請求授予打開設備閃光燈的權限,系統將會自動授予這個權限。但是,如果你的app需要讀取用戶的通訊錄聯繫人,系統就會請求用戶是否授予讀取聯繫人的權限。根據android不同的系統版本,請求用戶授予app權限的時機可能是在安裝app的時候(在android 5.1或者更早的系統版本上),也有可能是在app運行的過程中(在android 6.0或者更高的系統版本上)。


判斷你的App究竟需要哪些權限


當你在開發app的時候,你應該注意使用那些需要申請權限的功能。通常情況下,一個app需要使用非它自己本身創建的信息或者資源,以及執行會影響設備或者其它app的操作時,它就需要申請權限。例如,如果一個app需要訪問網絡,使用設備攝像頭,或者打開關閉wifi,那麼這個app就需要對應的權限。系統的權限列表,請查看普通等級和危險等級的權限
你的app只需要申請app直接執行的操作所需要的權限。如果你的app只是請求其它app來執行任務或者提供信息,那麼你的app不需要申請這些任務或者信息所需要的權限。例如,如果你的app需要讀取用戶的地址簿,那麼你需要申請READ_CONTACT權限。但是,如果你的app使用一個Intent來請求用戶的通訊錄app獲取信息,你的app就不需要任何相關的權限,不過,通訊錄的app就需要申請相關的權限。更多的詳情,請參考考慮使用Intent


添加權限到Manifest


聲明app需要的權限,必須使用<uses-permission>標籤在app的manifest文件中作爲<manifest>元素的子標籤進行聲明。例如,一個需要發送短信的app在manifest文件中的聲明大致如下:

<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>

當你聲明一個權限之後,系統的行爲根據權限的隱私程度來決定。如果聲明的權限不涉及用戶的隱私,那麼系統會自動授予這個權限。如果這個權限可能會涉及到用戶的隱私信息,系統就會諮詢用戶是否要授予該權限的申請。更多關於不同權限類型的信息,請參考普通等級和危險等級的權限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章