升级到最新的SDK之后,我回到了小部件开发,突然我的小部件在启动时失败,并显示以下消息:
ERROR/AndroIDRuntime(5296): java.lang.RuntimeException: Unable to start receiver topjob.Widget.SearchWidget: java.lang.SecurityException: Permission Denial: attempt to change component state from pID=5296, uID=10057, package uID=10048
这是发生异常的两行代码:
@OverrIDepublic voID onEnabled(Context context) { PackageManager pm = context.getPackageManager(); pm.setComponentEnabledSetting(new Componentname("topjob", ".Widget.SearchWidgetbroadcastReceiver"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); startAlarm(context, UPDATE_RATE_SEC);}
因此在上面的代码中,因为pm.setComponentEnabledSetting()引发SecurityException,所以永远不会执行startAlarm()
我是否在清单中缺少任何安全设置?目前我有:
<uses-permission androID:name="androID.permission.INTERNET" /><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission androID:name="androID.permission.WAKE_LOCK" />
我正在为SDK v.1.5开发,它过去可以正常工作
附言它发生在手机和模拟器上
解决方法:
在manifest.xml中,您将添加
<permission androID:name="androID.permission.CHANGE_COMPONENT_ENABLED_STATE"/>androID:sharedUserID="androID.uID.system"
在AndroID.mk中将添加
LOCAL_CERTIFICATE := platform
这就是全部.
总结以上是内存溢出为你收集整理的Android-无法启用BroadcastReceiver全部内容,希望文章能够帮你解决Android-无法启用BroadcastReceiver所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)