最近Androidの勉強を始めたばかりの西田と申します。
よろしくお願い致します。
現在複数のアプリが、ブロードキャストのメッセージングで機能分担する
ようなアプリを開発しています。
ここでつまずいているのが以下の点です。
あるアクティビティが送信した自分(アクティビティ)に対してのブロー
ドキャストを受け取ったら、自分を前面に表示させたいというものです。
(送信元と自分とは別アプリです)
ここでの制限として、「自分のアクティビティが動作していない場合は、
起動させられたくない」という条件があり、自分がバックグラウンドに起
動している場合のみブロードキャストに反応して自分を前面に表示したい
ということになります。
ブロードキャストのメッセージは、Toastによって正常に届いていることが
確認できています。
ちなみに getWindow().setActive();
とか試してみましたが、下に隠れたままでうまくいきませんでした。
いろいろググってみましたが、いまのところうまく行っておりません。
解決法の御指南をいただけたら幸いです。
よろしくお願い致します。
intentにFLAG_ACTIVITY_REORDER_TO_FRONTフラグをセットして
startActivity()するとうまくいくかもしれません。
サンプル。
Intentl intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
あるいは、FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
も使えるかも知れませんが、これはアプリからは通常セットしない
と書いてあるので、どうなるか不明です。
私はそれらを試したわけではないので期待通りに動かなかったら
ごめんなさい。
詳しくは以下をごらんください。
http://developer.android.com/reference/android/content/Intent.html
早速のアドバイスありがとうございました。
Actvity起動時のフラグの種類、たくさんある上に少々わかりにくいので四苦八苦です。
教えていただいた方法、startActivity にフラグをセットしたインテントを渡す方法で、
起動していないアクティビティは何もせず、起動しているもののみ手前に持ってくる
ことができますでしょうか?
もしかしたら、自分自身に対してstartActivityを実行してみるとできるかもしれませんね。
早速試してみたいと思います。
ありがとうございました。
2010年9月22日12:17 tm sute <tms...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
まだ細かなログ等、深いところまでの調査はできていません。
《失敗コード 自分自身を前面に出そうとした》
// BroadcastReceiver のonReceiveイベント内で以下を実行
Intent intentMe = new Intent(MyActivity.this, MyActivity.class);
intentMe.setFlags(Intent.FLAG_ACTIVITY_REORDER_FRONT);
startActivity(intentMe);
やっぱりやろうとしていることに無理があるのかもしれません。
(それも勉強不足であやふやですが...)
もう少し調べてから、再度四苦八苦してみます。
2010年9月22日13:21 西田 清道(Gmail) <kni...@gmail.com>: