我写了一个自定义的权限来接收我的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