Вопрос: Есть ли способ включить некоторые виджеты рабочего стола, которые я выдаю с помощью моего приложения программно? Например, имея «премиальный» виджет и предоставляющий ему доступ только после оплаты?Android: включить/отключить виджеты приложений программно
Как Android docs говорят, нужно добавить широковещательный приемник в манифесте, чтобы сообщить системе, что есть виджет идет с приложением:
<receiver android:name="ExampleAppWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
</receiver>
Но в теории радиовещательных приемников могут также быть добавлено программно, так что виджеты могут быть зарегистрированы позже во время выполнения?
Спасибо! Короткий вопрос: означает ли это, что другие приложения могут вызвать эту функцию, указав мой компонент-получатель или даже включив его из командной строки adb? – frangulyan
@frangulyan: «это означает, что другие приложения могут вызывать эту функцию с указанием моего компонента-получателя» - обычные приложения Android SDK не могут. Системные приложения, приложения на корневых устройствах и т. Д. «даже включить его из командной строки adb?» -- Я думаю так. ИМХО, это должно быть довольно далеко от вашего списка проблем. – CommonsWare
Поздно к вечеринке, я знаю, но для будущей ссылки 'setComponentEnabledSetting()' не надежно работает для AppWidgets на всех версиях Android. Отчет об ошибке находится здесь: https://issuetracker.google.com/issues/36914010 – String