ブロードキャストの受信で、自分自身を前面に表示させる方法について

1,543 views
Skip to first unread message

Kiyomichi Nishida

unread,
Sep 21, 2010, 5:18:31 PM9/21/10
to android-g...@googlegroups.com

はじめまして。

最近Androidの勉強を始めたばかりの西田と申します。
よろしくお願い致します。

現在複数のアプリが、ブロードキャストのメッセージングで機能分担する
ようなアプリを開発しています。

ここでつまずいているのが以下の点です。

あるアクティビティが送信した自分(アクティビティ)に対してのブロー
ドキャストを受け取ったら、自分を前面に表示させたいというものです。
(送信元と自分とは別アプリです)

ここでの制限として、「自分のアクティビティが動作していない場合は、
起動させられたくない」という条件があり、自分がバックグラウンドに起
動している場合のみブロードキャストに反応して自分を前面に表示したい
ということになります。

ブロードキャストのメッセージは、Toastによって正常に届いていることが
確認できています。

ちなみに getWindow().setActive();

とか試してみましたが、下に隠れたままでうまくいきませんでした。

いろいろググってみましたが、いまのところうまく行っておりません。
解決法の御指南をいただけたら幸いです。

よろしくお願い致します。

tm sute

unread,
Sep 21, 2010, 11:17:58 PM9/21/10
to android-g...@googlegroups.com
tmsuteです。

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

西田 清道(Gmail)

unread,
Sep 22, 2010, 12:21:44 AM9/22/10
to android-g...@googlegroups.com
tmsute さま

早速のアドバイスありがとうございました。
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 からこのグループにアクセスしてください。
>
>

西田 清道(Gmail)

unread,
Sep 22, 2010, 1:25:31 AM9/22/10
to android-g...@googlegroups.com
やっぱり自分自身に対するstartActivityの目論見は無謀のようでした。
エラーとかは出ませんでしたが、無視されています。

まだ細かなログ等、深いところまでの調査はできていません。

《失敗コード 自分自身を前面に出そうとした》
// 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>:

Reply all
Reply to author
Forward
0 new messages