在为 Android 开发启动器(主屏幕)应用程序时,我遇到了一个我不明白的安全异常。
- 从我的 Launcher Activity 中调用 [bindAppWidgetId()][1] 方法时,我得到了这个安全异常:
08-19 11:30:11.689: 错误/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:
"android:sharedUserId="android.uid.system"
会不会和我的问题有关?
如果有人有想法那就太好了!
干杯,劳伦特