2011-07-31 64 views
3

使用<uses-permission>請求權限與應用程序和活動標籤內的android:權限有什麼區別?不同的Android權限級別

當我只用:

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

該應用程序運行正常,但如果同時使用:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" 
android:permission="android.permission.WAKE_LOCK"> 

甚至:

<activity android:name=".android.Everlong" 
      android:label="@string/app_name" android:screenOrientation="portrait" 
      android:permission="android.permission.WAKE_LOCK"> 

應用程序不啓動由於安全錯誤...

回答

5

documentation

安卓權限

客戶端必須有 推出的活動或以其他方式得到它的一個意圖響應許可的名稱。如果startActivity()或startActivityForResult()的調用者 未被授予指定權限 ,則其意圖不會被傳遞到 該活動。如果未設置此屬性,則由 元素的權限屬性設置的權限將應用於該活動。 如果兩個屬性均未設置,則該活動不受 權限的保護。有關權限的更多信息,請參閱介紹中的權限 部分以及另一文檔Security和 權限。

uses-permission - 在安裝時(您的應用程序),用戶必須接受此權限。

android:permission - 當另一個應用程序想要調用您的應用程序時,您可以指定他們需要哪個權限(在安裝其他應用程序時)給您打電話。

基本上,如果另一個應用程序想要通過Intent調用您的Activity,並且指定您需要這種權限,那麼該應用程序必須有權訪問該權限。否則,Intent將被您的應用拒絕。

+0

那麼,爲什麼我的應用程序啓動,如果我使用android:權限或者在應用程序或活動中,即使使用?因爲我試圖運行我自己的應用程序.... –

+1

你已經提到你正在收到'安全錯誤',但是不清楚確切的錯誤是什麼。也許你想編輯你的問題,以提供有關安全錯誤具體消息的更多信息。 –

4

<uses-permission>正如您所提及的是使用特定'權限'的'請求'。這提醒安裝您的應用的用戶想要訪問其設備的某些部分(如喚醒鎖,訪問SD卡,電話狀態等)。它還允許您的應用訪問需要特定權限的其他應用(及其組件)。

當您在應用程序的各種組件上使用android:permission時,它會指定其他第三方應用程序需要具有哪些權限才能啓動您的應用程序組件。