ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

Unity×Android 自分のタスクを前面に持ってくる(Android10, 11)※調査中の記事

f:id:tomo_mana:20220330165710p:plain

自分のタスクを前面に持ってくる処理(課題の備忘用)


以下のサイトを参考にしました。
(が、2つのサイトで同じ処理が記載されており、他の出元があるかもしれません)
http://stren-blog.seesaa.net/article/435048614.html
https://friegen.xyz/android-myapp-move-foreground/

処理

今のところ、以下の処理で動作はします(Android10、11)。

ただし、タスクIDの取得に課題があります。

import

import android.app.ActivityManager;

タスクを最前線に持ってくる処理

int id = getMyAppId();
if (id > 0) {
	ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
	activityManager.moveTaskToFront(id, ActivityManager.MOVE_TASK_WITH_HOME);
}

現在のタスク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(TestService.this.getPackageName())) {
            return recentTasks.get(i).id;
        }
    }
    return id;
}

※上記処理は、Activity だけでなく Service に実装しても動作はします。

課題

以下のサイトにもあるように、getRunningTasks() は非推奨のため、別の方法でタスクIDを取得する必要があります。

f:id:tomo_mana:20220314165056p:plain
ActivityManager.getRunningTasks → deprecated

引き続き調査します。


(問題解決の参考になりそうなサイト)
【Android】getRunningTasksが使えなくなったLollipopでアプリ使用状況を取得する - Qiita
[Android]自分のアプリが前面にいるかを判別する正しい方法 - Qiita


(以上)