Исключение безопасности при вызове bindAppWidgetId

При разработке приложения Launcher (Homescreen) для Android я столкнулся с исключением безопасности, которое не понимаю.

  • При вызове метода [bindAppWidgetId()][1] из моей активности Launcher я получаю это исключение безопасности:

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, но это не решает проблему.

Кроме того, я просмотрел манифест приложения «Настройки» из источников Android, который содержит код AppWidgetPickActivity: есть специальная строка, которая просит поделиться идентификатором пользователя:

«андроид: общий идентификатор пользователя = «android.uid.system»

Может ли это быть связано с моей проблемой?

Если у кого-то есть идея, это было бы здорово!

Привет, Лоран


person laurentsebag    schedule 19.08.2010    source источник
comment
Это путь от: [Решение здесь][1] [1]: stackoverflow.com/questions/9746173/   -  person herbertD    schedule 21.06.2012


Ответы (2)


Я нашел ответ!

BindAppWidgetId() намеренно недоступен для приложений! (проблемы безопасности).

«Разрешение android.permission.BIND_APPWIDGET — это системное разрешение. Вы можете получить это разрешение, только если ваш пакет установлен как системный пакет (установлен в /system/app вместо /data/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

person laurentsebag    schedule 27.08.2010

Быстрый поиск в Google показывает, что android.permission.APPWIDGET_LIST — это доступное разрешение, даже если оно не указано в документах API.

person Melody Horn    schedule 19.08.2010
comment
Спасибо, Мэтт, но я уже добавил это в свой манифест. Увы, это не решает мою проблему с безопасностью... проблема остается. - person laurentsebag; 20.08.2010
comment
Кстати, не могли бы вы привести источники, в которых говорится, что это полезное разрешение? - person laurentsebag; 20.08.2010
comment
Абсолютно: androidzoom.com/android_applications/tools/ Извините за поздний ответ. - person Melody Horn; 15.09.2010
comment
на вкладке «Разрешения» он перечисляет android.permission.APPWIDGET_LIST. - person Melody Horn; 03.10.2010