バックグラウンドから前面へ

1,137 views
Skip to first unread message

kanko

unread,
Jun 24, 2015, 5:05:39 AM6/24/15
to android-g...@googlegroups.com
ホームキーやほかのアプリが乗って、
後ろに行ったアプリを前面に呼び出すにはどうすべきなのでしょうか。


自分のアプリでA画面→A画面を削除して→B画面→C画面表示しているときに別のアプリが表示されたら
C画面を表示したいのですが、ActivityManagerを使って、自分のパッケージのTOPのActivityを指定して
FLAG_ACTIVITY_SINGLE_TOPをsetFlags()に指定して、startActivityとするような方法を考えてはいるのですが
もっと簡単に実施できたりするのでしょうか。

#ランチャーからアイコンをタップした場合、すでに起動していた場合、そのアプリのTOPActivityが表示されるので
#もっと簡単に表示できるのかな・・・とおもっているのですが・・・

Makoto Yamazaki

unread,
Jun 24, 2015, 5:16:24 AM6/24/15
to android-g...@googlegroups.com
zaki です。

最初の Activity が finish していしまっていてもうまくいくかはわからないですが
最初のActivity (intent filter の action に MAIN が指定されているもの) を起動する Intent を
作成して、

        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);

として startActivityしたらうまくいかないでしょうか。

どうなるか興味があるんのでうまく行ってもイカなくても結果を教えてもらえると嬉しいです。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
YAMAZAKI Makoto

Shigeo Mutoh

unread,
Jun 24, 2015, 2:06:52 PM6/24/15
to android-g...@googlegroups.com
武藤です。

ご希望の挙動について詳細までよく理解できなかったのですが、「後ろにいった
activityを全面に出す」のはできます。ただ、自分がやったのはServiceが
とある条件を検知すると、特定のActivityを表に出す、というものです。

1. 該当activityをandroid:launchMode="singleTask"する。
これいらないかも。

2. こんなメソッドを呼ぶ。

1 /**
2 * Main Activityを起動する.
3 * @param ctx
4 * @return
5 */
6 private static void startMainActivity(Context ctx) {
7 // Application Contextじゃないと起動できない
8 Context actx = ctx.getApplicationContext();
9 String ownPackageName = actx.getApplicationInfo().packageName;
10 PackageManager pm = actx.getPackageManager();
11 Intent i = pm.getLaunchIntentForPackage(ownPackageName);
12
13 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TOP);
14 actx.startActivity(i);
15 }

startMainActivityの中身についてはそういう意図なので、そういう意図
 でないなら、適当に変えてやってください。
 たしか、Activityがまだ生存しているときは、onNewIntent()が呼ばれ、
 死んでたらonCreate()が普通に呼ばれるのだったと思う。

では。
Message has been deleted

kanko

unread,
Jun 24, 2015, 8:34:17 PM6/24/15
to android-g...@googlegroups.com
zaki様、武藤様

回答ありがとうございます。

最初のActivity (intent filter の action に MAIN が指定されているもの)
これがA画面になっており、A画面削除してB画面、C画面とActivityが積まれていく感じです。
一定の周期でアプリが背面に隠れていた場合に前面に出したく、質問させていただきました。


zaki様のいわれるように
        Context actx = ctx.getApplicationContext();    // 武藤様から拝借
    Intent active = new Intent(actx 最初のActivity.class);
        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
上記を指定して、想定の動作になることを確認できました。
最初のActivityはfinishしているので、またonCreateが走るのかなとも思ったのですが現状は走っていないようです。

武藤様
 getLaunchIntentForPackage()についても試してみます。


ありがとうございました
Reply all
Reply to author
Forward
0 new messages