在为Android开发Launcher(Homescreen)应用程序时,我遇到了一个我不明白的安全例外.
从我的Launcher Activity中调用[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"
它可能与我的问题有关吗?
如果有人有一个想法会很棒!
干杯,洛朗
我找到了答案!
BindAppWidgetId()故意不适用于应用程序!(安全问题).
"android.permission.BIND_APPWIDGET权限是系统权限.如果您的软件包作为系统软件包安装(安装在/ system/app而不是/ data/app中),则只能获得该权限,或者使用证书为您的应用程序签名这是与您的机器人形象.所以basicly这意味着,如果你也是你的平台/手机上的机器人形象的创造者,你只能使用此权限."
以下是此信息的链接:
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