自分のタスクを前面に持ってくる処理(課題の備忘用)
以下のサイトを参考にしました。
(が、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を取得する必要があります。
引き続き調査します。
(問題解決の参考になりそうなサイト)
【Android】getRunningTasksが使えなくなったLollipopでアプリ使用状況を取得する - Qiita
[Android]自分のアプリが前面にいるかを判別する正しい方法 - Qiita
(以上)