Android-无法启用BroadcastReceiver

Android-无法启用BroadcastReceiver,第1张

概述升级到最新的SDK之后,我回到了小部件开发,突然我的小部件在启动时失败,并显示以下消息:ERROR/AndroidRuntime(5296):java.lang.RuntimeException:Unabletostartreceivertopjob.widget.SearchWidget:java.lang.SecurityException:PermissionDenial:attempttochange

升级到最新的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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存