Мое простое приложение-виджет устанавливается и отлично работает, когда оно подписано как отладочное приложение, но как только я пытаюсь подписать его готовым к выходу на рынок, я сталкиваюсь со странным поведением: оно не отображается в списке виджетов, пока я не удалю его. приложение, когда оно отображается как стандартный значок робота Android "У меня нет этого".
Попытка перетащить этот «отсутствующий» виджет на экран приводит к сбою Launcher.
Чтобы исследовать это, я добавил намерение MAIN/LAUNCH к одному из действий, и оно появляется, как и ожидалось, при установке и исчезает при удалении.
Что очень жутко, так это то, что если я переустанавливаю, в то время как в Launcher отображается значок робота «У меня нет этого», мой виджет ненадолго заменяет этот значок, а затем исчезает из списка.
Я не вижу никаких сообщений об ошибках или выданных намерений в журнале, кроме обычного «Я удаляю / устанавливаю это».
Есть ли что-то глупое и очевидное, что мне не хватает, например, «подписанные приложения должны специально регистрировать свои виджеты», что не требуется в режиме отладки?
Вот мои свойства манифеста и виджета:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
package="uk.org.baverstock.appghoul">
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="9"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="uk.org.baverstock.appghoul.AppGhoulWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_provider"/>
</receiver>
<activity android:name=".Configure"
android:excludeFromRecents="true"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
<intent-filter>
<!-- Why does this show up, when the widget doesn't? -->
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".ControlsChoiceActivity"
android:theme="@android:style/Theme.Dialog"
android:excludeFromRecents="true"
/>
<activity android:name=".ReconfigureWidget"
android:theme="@android:style/Theme.Dialog"
android:excludeFromRecents="true"
/>
<receiver
android:name=".WidgetRescanner"
android:label="WidgetRescanner"
>
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_CHANGED"/>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
</application>
</manifest>
и свойства виджета:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="72dp"
android:minHeight="72dp"
android:updatePeriodMillis="86400000"
android:initialLayout="@layout/widget"
android:configure="uk.org.baverstock.appghoul.Configure"
android:previewImage="@drawable/icon"
android:widgetCategory="home_screen">
<!--
android:resizeMode="horizontal|vertical"
android:initialKeyguardLayout="@layout/example_keyguard"
-->
</appwidget-provider>