android SecurityException:android.permission.BIND_APPWIDGET(adb push与adb install的区别)
2012-04-06 15:36
447 查看
用adb install重新安装launcher后出现以下异常:
E/LauncherProvider( 2064): Problem allocating appWidgetId
E/LauncherProvider( 2064): java.lang.SecurityException: bindGagetId
appWidgetId=843 provider=ComponentInfo{com.android.quicksearchbox/com.android.quicksearchbox.SearchWidgetProvider}: User 10047 does not have android.permission.BIND_APPWIDGET.
E/LauncherProvider( 2064): at android.os.Parcel.readException(Parcel.java:1247)
E/LauncherProvider( 2064): at android.os.Parcel.readException(Parcel.java:1235)
E/LauncherProvider( 2064): at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.bindAppWidgetId(IAppWidgetService.java:470)
E/LauncherProvider( 2064): at android.appwidget.AppWidgetManager.bindAppWidgetId(AppWidgetManager.java:368)
E/LauncherProvider( 2064): at com.xxx.launcherplus.LauncherProvider$DatabaseHelper.addAppWidget(LauncherProvider.java:827)
搜索后得到如下比较满意的答案:
原文地址:http://www.krvarma.com/posts/android/security-permissions-in-android/
As we all know whenever we use a particular feature or API we need to request the permission in AndroidManifest.xml file with uses-permission element. If we don’t specify any permissions, then the application will not have any permission
and application can do anything that does not require a permission. This link explains
the permissions in android in more detail and this link lists the
permissions in Android.
Permissions are granted to the application by package installer while installing. But not all the permissions will be granted to the system. There are some system permission which will not be granted to the user applications,
but only to the system applications. Following are some of the permissions that may NOT be granted to the user application.
To get these permissions, the application must be signed with the key which used to sign the platform. This may be different for manufacturers. So it practically not possible to get these permissions granted to a user application.
Note: While playing with
and above list of permissions are not granted. Hope this will help you when you request a permission next time.
读了这篇文章之后,了解到android里的应用有用户级和系统级之分。而之前我恰恰一直是用adb install... 来安装launcher应用的, 所以就出现了上面的异常。知道了产生问题的根源,解决办法自然就有了,换用adb push...一安装马上搞定。
补充一点小知识,关于adb push 和 adb install 的区别:
adb push 能够指定安装目录。比如执行"adb push xxx.apk system/app" 后,xxx.apk被安装到了system/app目录下,此目录下的软件为上文中提到的system application。
adb install 用此命令安装的软件位于 data/app 目录,则为user application。
E/LauncherProvider( 2064): Problem allocating appWidgetId
E/LauncherProvider( 2064): java.lang.SecurityException: bindGagetId
appWidgetId=843 provider=ComponentInfo{com.android.quicksearchbox/com.android.quicksearchbox.SearchWidgetProvider}: User 10047 does not have android.permission.BIND_APPWIDGET.
E/LauncherProvider( 2064): at android.os.Parcel.readException(Parcel.java:1247)
E/LauncherProvider( 2064): at android.os.Parcel.readException(Parcel.java:1235)
E/LauncherProvider( 2064): at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.bindAppWidgetId(IAppWidgetService.java:470)
E/LauncherProvider( 2064): at android.appwidget.AppWidgetManager.bindAppWidgetId(AppWidgetManager.java:368)
E/LauncherProvider( 2064): at com.xxx.launcherplus.LauncherProvider$DatabaseHelper.addAppWidget(LauncherProvider.java:827)
搜索后得到如下比较满意的答案:
原文地址:http://www.krvarma.com/posts/android/security-permissions-in-android/
As we all know whenever we use a particular feature or API we need to request the permission in AndroidManifest.xml file with uses-permission element. If we don’t specify any permissions, then the application will not have any permission
and application can do anything that does not require a permission. This link explains
the permissions in android in more detail and this link lists the
permissions in Android.
Permissions are granted to the application by package installer while installing. But not all the permissions will be granted to the system. There are some system permission which will not be granted to the user applications,
but only to the system applications. Following are some of the permissions that may NOT be granted to the user application.
android.permission.ACCESS_CHECKIN_PROPERTIES android.permission.ACCESS_SURFACE_FLINGER android.permission.ACCOUNT_MANAGER android.permission.BIND_APPWIDGET android.permission.BIND_DEVICE_ADMIN android.permission.BIND_INPUT_METHOD android.permission.BIND_WALLPAPER android.permission.BRICK android.permission.BROADCAST_PACKAGE_REMOVED android.permission.BROADCAST_SMS android.permission.BROADCAST_WAP_PUSH android.permission.CALL_PRIVILEGED android.permission.CHANGE_COMPONENT_ENABLED_STATE android.permission.CLEAR_APP_USER_DATA android.permission.CONTROL_LOCATION_UPDATES android.permission.DELETE_CACHE_FILES android.permission.DELETE_PACKAGES android.permission.DEVICE_POWER android.permission.DIAGNOSTIC android.permission.FACTORY_TEST android.permission.FORCE_BACK android.permission.GLOBAL_SEARCH android.permission.HARDWARE_TEST android.permission.INJECT_EVENTS android.permission.INSTALL_LOCATION_PROVIDER android.permission.INSTALL_PACKAGES android.permission.INTERNAL_SYSTEM_WINDOW android.permission.MANAGE_APP_TOKENS android.permission.MASTER_CLEAR android.permission.READ_FRAME_BUFFER android.permission.READ_INPUT_STATE android.permission.REBOOT android.permission.SET_ACTIVITY_WATCHER android.permission.SET_ORIENTATION android.permission.SET_PREFERRED_APPLICATIONS android.permission.SET_TIME android.permission.STATUS_BAR android.permission.UPDATE_DEVICE_STATS android.permission.WRITE_GSERVICES android.permission.WRITE_SECURE_SETTINGS
To get these permissions, the application must be signed with the key which used to sign the platform. This may be different for manufacturers. So it practically not possible to get these permissions granted to a user application.
Note: While playing with
PowerManager.rebootI was so stupid I thought my application will be granted the permission
android.permission.REBOOT, but it was not granted. Then I created an application requesting all the permissions
and above list of permissions are not granted. Hope this will help you when you request a permission next time.
读了这篇文章之后,了解到android里的应用有用户级和系统级之分。而之前我恰恰一直是用adb install... 来安装launcher应用的, 所以就出现了上面的异常。知道了产生问题的根源,解决办法自然就有了,换用adb push...一安装马上搞定。
补充一点小知识,关于adb push 和 adb install 的区别:
adb push 能够指定安装目录。比如执行"adb push xxx.apk system/app" 后,xxx.apk被安装到了system/app目录下,此目录下的软件为上文中提到的system application。
adb install 用此命令安装的软件位于 data/app 目录,则为user application。
相关文章推荐
- adb push与adb install的区别(android SecurityException:android.permission.BIND_APPWIDGET)
- Android 第三方桌面,怎么请求Widget的android.permission.BIND_APPWIDGET
- Android 第三方桌面,怎么请求Widget的android.permission.BIND_APPWIDGET
- adb install 与 adb push 的区别
- android adb install + apk 与adb push+apk两种安装apk的使用总结
- adb push 和 adb install 的区别
- android adb push apk /system/app
- Android中adb push和adb install的使用区别
- android ADB PUSH 安装apk的具体步骤 及 与 ADB INSTALL 的区别
- Android中adb push和adb install的使用区别
- android 导致adb 无法使用error: could not install *smartsocket* listener: cannot bind
- android-错误:refused to install the app by The ADB command !
- android adb push 与 adb install 区别(两种安装APK的方法)
- android adb install + apk 与adb push+apk两种安装apk的使用总结
- Android中adb push和adb install的使用区别
- android adb pull/push permission denied可能的解决办法
- android adb push 和 adb install的区别
- android原生APP adb install问题
- android-错误:refused to install the app by The ADB command !
- [android] adb install 多设备时指定设备app