備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

Android開発でForegroundか、Backgroundかを検知する

Push通知を実装するときに、Foregroundのときはステータスバーに通知を表示。
Backgroundのときには、DialogFragmentで表示という実装をしたかったときのメモ。
まず、Foreground、Backgroundという事をandroidで検知する事が、出来るのか、、、 調べること、10分。
結構すぐに出てきました。
検索ワードはこちら、

Background Foreground 取得 android

方法としては、

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> processInfoList = am.getRunningAppProcesses();
for( RunningAppProcessInfo info : processInfoList){
    if(info.processName.equals(getPackageName())){
        if( info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){

        }
    }
}

こんな感じで取得出来るようです。
バックグラウンド時もフォアグラウンドと判定される事もあったとの事ですが、自分は、こちらのほうで実装しましたー。
あと1パターンの方法は、こちらのようです

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
if (am.getRunningTasks(1).get(0).topActivity.getPackageName().equals(getApplicationContext().getPackageName())) {
  // ここにフォアグラウンドの場合の処理を実装
}

この場合、

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

こんな感じで、パーミッションの設定も必要との事です。