Android を使用して、GCMIntentService をスローする通知プッシュを受信したときに、アプリが開いているかどうかを知りたいです。ユーザーが通知をクリックしたときにアプリが開いている場合は何もしたくないのですが、アプリが閉じている場合アプリを開きたい。
3 に答える
ルート アクティビティ (マニフェストに ACTION=MAIN と CATEGORY=LAUNCHER があるアクティビティ) を起動し、 を追加しIntent.FLAG_ACTIVITY_NEW_TASK
ます。アプリが既にアクティブな場合 (どのアクティビティが一番上にあるかに関係なく)、タスクが最前面に表示されます。アプリがアクティブでない場合は、ルート アクティビティから開始されます。
すべてのアクティビティでこれを定義します。1.) 「check_running mode」という名前の静的な最終ブール値フラグを定義します。2.) すべてのアクティビティで onResume() および onPause() メソッドを定義 (オーバーライド) します。3.) このフラグの値を onResume() メソッドで「true」に、OnPause() メソッドで「false」にそれぞれ設定します。4.) プッシュ通知を受信したときにチェックアウトします。a. falg 値が true の場合、アプリがフォアグラウンドにあることを意味するため、その場合は何もしない b. フラグ値が false の場合、アプリがバックグラウンドにあることを意味するため、その場合はアプリを開くことができます
注: falg は、任意のアクティビティから変更し、レシーバー クラスで簡単にアクセスできるため、 static final である必要があります。私はそれがあなたのために働くことを願っています!
1 :
static boolean check_running mode = false;
-------------------
2:
@Override
protected void onResume() {
super.onResume();
check_running mode = true;
}
@Override
protected void onPause() {
check_running mode = false;
super.onPause();
}
---------------------
3 :
if (check_running mode) {
showUserView();
}
else {
showNotification();
}