我的简单小部件应用程序在作为调试应用程序签名时可以完美安装并运行,但是一旦我尝试将其签名准备上市,我就会遇到奇怪的行为:直到我卸载应用程序时它才会出现在小部件列表中它显示为标准 Android 的“我没有这个”机器人图标。
尝试将此“缺失”小部件拖动到屏幕会导致启动器崩溃。
为了调查这一点,我在其中一个活动中添加了一个 MAIN/LAUNCH 意图,它在安装时按预期显示,在我卸载时消失。
令人毛骨悚然的是,如果我重新安装,当启动器显示“我没有这个”机器人图标时,我的小部件会短暂替换该图标,然后从列表中消失。
除了正常的“我正在卸载/安装它”之外,我在日志中看不到任何错误消息或发出的意图。
是否有一些愚蠢和明显的东西我错过了,比如“签名的应用程序必须专门注册他们的小部件”,这在调试模式下是没有必要的?
这是我的清单和小部件属性:
<?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>