0

私は持っappwidgetていlistviewます。ここで見ることができるいくつかの情報

1) このウィジェットは 2.x では動作しません。ただし、このデバイスのユーザーは、このウィジェットを自分のリストに表示し、画面上で移動できます。エラーが発生した後。2.x でこのウィジェットを非表示にする方法はありますか? もちろん、このウィジェットのタイトルを「MyWidget... (3.x-4.x)」に設定することもできますが、これは良くないと思います。

2) 2 番目の問題。クリック ウィジェットで、アプリケーション 1 activity(widgetAct) を開きます。これは主な活動ではありません。widgetAct がダイアログとして表示されました。すべて動作しますが... メイン アクティビティを開くと、次に [戻る] ではなく [ホーム] をクリックします。ウィジェットをクリックして、widgetAct を開きましたが、バックグラウンドでメイン アクティビティも表示されます。

3) 別のケース。widgetAct を開きます。この活動を参照してください。[戻る] をクリックします。ここで長押し: 最後に起動したアプリケーションを表示します。アプリケーション (widgetAct を含む) をクリックすると、この widgetAct が表示されます。ただし、アプリケーションのメイン アクティビティまたは別のアクティビティを表示したいが、widgetAct は表示したくない。

私はさまざまなケースを試します: add FLAG_ACTIVITY_NO_HISTORY, FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP. しかし、何も役に立ちません:

Intent i = new Intent(ctx, myActivityCls);      i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pi = PendingIntent.getActivity(ctx, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(viewId, pi);

私のwidgetAct on openにはFLAG_ACTIVITY_NEW_TASKフラグしかありません。

4

1 に答える 1

0

理由はわかりませんが... インテントにいくつかのフラグを設定し、クリック ウィジェットでアクティビティを開始します。本当に開かれた活動は だけFLAG_ACTIVITY_NEW_TASKです。

解決策: 1) ウィジェット xml プロバイダーを xml フォルダーから xml-v11 に移動します。現在、2.x デバイスでは、このウィジェットは非表示になっています。

2) 2 番目のケース: widgetAct taskAffinityに設定します。しかし、この場合、最近のアプリでは、2 つのスタック アクティビティを使用したため、2 つのアプリケーション インスタンスが表示されます。それを修正するには、widgetAct に追加します。

@Override
protected void onPause() {
    super.onPause();
    finish();
}

3) ウィジェットをクリックすると、widgetAct が開きます。このインスタンス widgetAct を閉じて、別の widgetAct を開きますが、次のフラグを追加します: FLAG_ACTIVITY_NO_HISTORY, FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS.

于 2013-08-19T10:05:20.990 に答える