1

すべての準備が整っている場合、アプリケーションアクティビティをスタックの前面に移動するために開始/ポーズするアイコンを持つホーム画面ウィジェットがあります。

アクティビティが既に実行されている場合は破棄されますが、それは望ましくありません。ウィジェットがタップされたときに、ホーム画面から表示に戻すだけです。

FLAG_ACTIVITY_REORDER_TO_FRONT、FLAG_ACTIVITY_BROUGHT_TO_FRONT、FLAG_ACTIVITY_NEW_TASKなど、すべての可能なフラグを優先せずに試しました....

アプリの最小 API は 13、開発中のデバイスは API 16 (本当に!) です。アイデアはありますか、それとも何か問題がありますか? サンクス!

public class AndaeroWidget extends AppWidgetProvider
{
 . . .//Some stuff . . .

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds)
    {
    super.onUpdate(context, appWidgetManager, appWidgetIds);

    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.home_widget);
    // When we click the widget, we want to open our main activity.
    Intent launchActivity = new Intent(context, MainActivity.class);
    launchActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, launchActivity, 0);
    remoteViews.setOnClickPendingIntent(R.id.widget, pendingIntent);;

    ComponentName thisWidget = new ComponentName(context, AndaeroWidget.class);
    AppWidgetManager manager = AppWidgetManager.getInstance(context);
    manager.updateAppWidget(thisWidget, remoteViews);
    }
. . .
}
4

1 に答える 1

2

マニフェストで MainActivity launchMode を singleInstance に設定します。

android:launchMode="singleInstance"

于 2012-04-10T21:58:21.447 に答える