2011-03-08 14 views
3

私はこれを検索して検索し、検索しました!Android AppWidgetの設定 - 新しいタスクで開始

私はアプリウィジェットを持っており、アプリのボタンを押すと開くことができる設定アクティビティを持っています。シナリオは次のとおりです。

Had the app opened.

Closed the app with the home button.

Selected to add my widget

I have configured the widget.

Placed on my home screen

Then open the configuration activity again with the button on the widget.

Cancel the new config by pressing back will put me back into the app.

私はちょうど帰宅したいです。

基本的に私が求めているのは、自分自身のタスク/スタック内で設定アクティビティを開始するにはどうすればよいですか?

私はインテントフィルタを調べましたが、私はあまりよく分かりません。あるいは、それがパッケージに含まれているかどうか、あるいはそれが可能でないかもしれません。

私はそれが私がコンテキストとして「この」でそれを起動するので、それは常に私のアプリケーションスタックで起動します私はコンフィグ活動

おそらく
Intent configIntent = new Intent(this, Configuration.class); 
configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
remoteView.setOnClickPendingIntent(R.id.config, PendingIntent.getActivity(this, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT)); 

を起動するために使用する意思とは何かを持っていることとし... が、保留中の意図APIがある:私はちょうど終わるよう PendingIntentのAPI 1

を「活動は、既存の活動の文脈の外で開始されることに注意してください」そうそう、私は今、話して停止されますサークルに入る!述べたように

EDIT

だからマニフェストでandroid:launchMode="singleInstance"を試してみました。しかし、これは正常に動作する 'startActivityForResult'ビヘイビアを停止します。 (これは、設定活動の全理由です)エラーを取得してください:

WARN/ActivityManager(59): Activity is launching as a new task, so cancelling activity result.

まだ解決策が見つかりませんでした。

答えて

9

ために必要な:-) [OK]を、それをソート:マニフェストで

android:taskAffinity="" 

を、タスクを設定します空の文字列との親和性は、アプリケーションが他のアプリケーションと「関連していない」ため、アクティビティを自身のスタックから開始することができます。

私は、タスクの親和性を変更した

UPDATE: アンドロイド:taskAffinity =「com.my.package.alternative.task」 を私が活動を開始した各時間として、それを複数回まで見せていました「歴史」の中で。だから今は自分のスタックで始まりますが、同じアクティビティの他のインスタンスと共有されます。

はまた、これはあなたが歴史ときに「長押しのホームボタンにアプリケーションの複数の時間の取得を停止します:-)自分の意思に Flag Intent.FLAG_ACTIVITY_NO_HISTORYを追加する必要があります。

UPDATE

私が気づいたFLAG_ACTIVITY_NO_HISTORYは、私はそれを削除して、コメントを追加しましたが、私が望んでやっていませんでした。

android:excludeFromRecents="true" 

をマニフェストのアクティビティタグにも同様に。アクティビティは今私が望むように振る舞います:-)

この回答は次のリンクから得られます: Tasks & Back Stack | Managing Tasks | Affiliation Tag

+0

私は同じ問題に直面しています。ここにあなたのソリューションを投稿していただきありがとうございます。あなたのソリューションを使用して、私の問題は解決されました! –

1

てみアンドロイド入れる:launchMode = "singleInstance" のAndroidManifest.xml

でアプリのアクティビティ
+0

これは実際には問題を解決しません。今すぐ取得:WARN/ActivityManager(59):アクティビティが新しいタスクとして起動しているため、アクティビティの結果がキャンセルされます。これは、設定活動が想定どおりに動作するようにはしません! :-( – Blundell

関連する問題