我为Honeycomb创建了一个AppWidget,它运行良好,但是刚安装时,它不会显示在小部件菜单中,因此无法添加到主屏幕。重新启动设备将允许它显示出来,或者在开发过程中,从Eclipse发送两次将使其显示出来。
有什么想法吗?
谢谢!
有什么想法吗?
谢谢!
显然 EboMike 是正确的,设置 android:installLocation="internalOnly" 确实解决了问题。如果没有指定安装位置,它应该默认为 internalOnly,但是对我来说似乎不是这样。也许在 Honeycomb 中有些改变?
此外,即使设置了 internalOnly,当从 Eclipse 安装时仍然遇到了问题(小部件在选择菜单中不会显示,直到第二次运行),但从 Android 市场安装时,它似乎可以正常工作,这是我的主要关注点。
谢谢!
<activity
android:name=".DummyActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2) 然后在您的“src”中创建一个名为“DummyActivity.java”的类,如下所示:
package com.domain.app;
import android.app.Activity;
import android.os.Bundle;
public class DummyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
finish();
}
}
有点诡异,
我做了这个installLocation修复,第一次就成功了。
但是从那时起,每次在我的Xoom上更新小部件后,我仍然需要重新启动才能在列表中看到它。
Intent intent = new Intent();
intent.setClassName(context, context.getPackageName() + ".WidgetProvider");
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,
getWidgetIds(context));
context.sendBroadcast(intent);
public class MyApp extends Application {
@Override
public void onCreate() {
WidgetController.getInstance().updateWidget(getApplicationContext());
}
}
!!! 重要提示:当 AppWidget 在应用程序中托管时,这已经足够了,但是当 AppWidget 与之分离时,您应该使用本主题中 @John 提出的方法。