我寫了一個自定義的權限來接收我的widget的廣播,我得到了摩托羅拉設備的權限拒絕。在摩托羅拉設備上自定義權限失敗
創建權限
<permission
android:name="com.sample.app.WIDGET_PERMISSION"
android:description="@string/widgetDesc"
android:label="@string/widgetLabel"
android:protectionLevel="signature" >
</permission>
添加權限清單文件
<uses-permission android:name="com.sample.app.WIDGET_PERMISSION" />
添加接收器
<receiver android:name=".MyWidget" android:label="MyApp"
android:icon="@drawable/image"
android:permission="com.sample.app.WIDGET_PERMISSION">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<category android:name="com.sample.app" />
</intent-filter>
</receiver>
我得到許可拒絕消息只對摩托羅拉設備,
07-17 11:48:18.781: W/ActivityManager(479): Permission Denial: broadcasting Intent { act=android.appwidget.action.APPWIDGET_ENABLED cmp=com.sample.app/.MyWidget} from android (pid=3116, uid=10006) requires com.sample.app.WIDGET_PERMISSION due to receiver com.sample.app/com.sample.app.MyWidget
07-17 11:48:18.781: W/ActivityManager(479): Permission Denial: broadcasting Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=com.sample.app/.MyWidget(has extras) } from android (pid=3116, uid=10006) requires com.sample.app.WIDGET_PERMISSION due to receiver com.sample.app/com.sample.app.MyWidget
07-17 11:48:18.828: W/ActivityManager(479): Permission Denial: broadcasting Intent { act=com.motorola.blur.home.ACTION_SET_WIDGET_SIZE cmp=com.sample.app/.MyWidget(has extras) } from com.motorola.blur.home (pid=3116, uid=10006) requires com.sample.app.WIDGET_PERMISSION due to receiver com.sample.app/com.sample.app.MyWidget
然後它的工作。但是,獲得此許可不得從未獲得此許可的發件人處收到。我的代碼適用於Samsung,Htc設備,概率僅限於Moto DroidX和Moto Bionic – dcanh121 2012-07-18 16:38:26
來自官方Android Developers頁面:如果未設置此屬性(android:permission),則由元素的權限屬性設置的權限適用於廣播接收機。如果兩個屬性均未設置,則接收方不受權限保護。 –
Erol
2012-07-18 16:54:48
如果應用程序需要訪問受權限保護的功能,則必須聲明它需要清單中具有元素的權限。然後,當應用程序安裝在設備上時,安裝程序會通過檢查簽署應用程序證書的權限並在某些情況下詢問用戶來確定是否授予請求的權限。如果授予權限,則應用程序可以使用受保護的功能。如果沒有,那麼訪問這些功能的嘗試只會在沒有任何通知給用戶的情況下失敗。 –
Erol
2012-07-18 16:55:04