[Android] 自分のアプリをフォアグラウンド(前面)に移動させる

スポンサーリンク

目的

自分のアプリは裏にいるのに、良きタイミングで無理やり前面に戻しちゃおうぜ的な。

用途としては、Push通知を受け取ったタイミングでアプリが起動していたらフォアグラウンドに戻して画面を見てもらうとかになるのかな。

そんなアプリものすごい嫌われそうだけど。

この実装したときは自分のアプリ以外が立ち上がったら自分のアプリを全面に戻すっていうウィルスチックなアプリを作ってたからね、、、。

実装

パーミッション

フォアグラウンドに戻すには権限が必要なのでマニフェストに以下を追加。

<uses-permission android:name="android.permission.REORDER_TASKS"/>

実装

/**
 * 自分を一番前に出す
 */
private void moveTaskToFront() {
    int id = getMyAppId();
    if (id > 0) {
        ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        activityManager.moveTaskToFront(id, ActivityManager.MOVE_TASK_WITH_HOME);
    }
}
 
/**
 * @return 自分のアプリのId
 
 * マイナス値の場合は自分自身が起動していない
 */
private int getMyAppId() {
    int id = -1;
    ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
 
    for (int i = 0; i < recentTasks.size(); i++) {
 
        if (recentTasks.get(i).baseActivity.getPackageName().equals(AppWatchService.this.getPackageName())) {
            return recentTasks.get(i).id;
        }
    }
 
    return id;
}

moveTaskToFront()で自分のアプリが一番前に戻ってくる。

Android Robot フィギュア オレンジ
Android Robot フィギュア オレンジの通販ならアマゾン。フィギュア・ドールの人気ランキング、レビューも充実。最短当日配送!

コメント

タイトルとURLをコピーしました