调用bindAppWidgetId时出现安全性异常

时间:2010-08-19 09:50:38

标签: android android-widget homescreen launcher

在为Android开发启动器(Homescreen)应用程序时,我遇到了一个我不明白的安全例外。

  • 打电话给 [bindAppWidgetId()] [1]方法来自 在我的启动器活动中,我明白了 这个安全例外:

08-19 11:30:11.689:ERROR / AndroidRuntime(6032):java.lang.SecurityException:bindGagetId appWidgetId = 99 provider = ComponentInfo {com.android.music / com.android.music.MediaAppWidgetProvider}:用户10034没有android.permission.BIND_APPWIDGET。

我首先想到我已经忘记了清单中的BIND_APPWIDGET权限,但它肯定存在。

android api文档说明了这一点:

  

“你需要APPWIDGET_LIST   允许。将使用此方法   通过AppWidget选择器。“

我尝试添加权限android.permission.APPWIDGET_LIST,但它没有解决问题。

另外,我查看了包含AppWidgetPickActivity代码的android源代码中的Settings应用程序的清单:有一条要求共享用户ID的特殊行:

  

“机器人:sharedUserId =” android.uid.system“

这可能与我的问题有关吗?

如果有人有想法会很棒!

干杯, 劳伦

2 个答案:

答案 0 :(得分:6)

我找到了答案!

BindAppWidgetId()故意不适用于应用程序! (安全问题)。

  

“android.permission.BIND_APPWIDGET   权限是系统权限。 您   如果你的话只能得到那个许可   包作为系统安装   包(安装在/ system / app中   替代/数据/应用程序)或签署您的应用程序   与证书相同的证书   你的android图片。基本上这个   表示您只能使用此权限   如果你也是的创造者   你平台/手机上的android图片。“

以下是此信息的链接:

http://groups.google.com/group/android-developers/browse_thread/thread/231245ba6d1e690f/047b9d3f776d7e54?lnk=gst&q=bindAppWidgetId#047b9d3f776d7e54

http://groups.google.com/group/android-developers/browse_thread/thread/f24e0f484a79d529/ef84188e8533a125?lnk=gst&q=bindAppWidgetId#ef84188e8533a125

答案 1 :(得分:0)

快速Google搜索显示android.permission.APPWIDGET_LIST是可用的权限,即使它未在API文档中列出。