Android при нажатии на уведомление об открытии активности на основе условия
У меня есть два действия, A(вход в систему) и B(DashBoard), я создаю уведомление на определенное время, и если пользователь уже находится в действии B, то при нажатии на уведомление ничего не должно происходить, а если приложение закрыто или не открыто, в щелкнув по уведомлению, необходимо открыть действие А. как это может быть достигнуто.TIA
я попробовал следующее в braodcastreceiver
@Override
public void onReceive(Context context, Intent intent) {
Log.e("NotificationReceiver","NotificationReceiver");
if(ActivityB.instance!=null){
}else{
Intent i = new Intent();
i.setClassName("com.test","com.test.ActivityA");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
Но когда мое приложение не открывается или не закрывается, остальное не выполняется.
1 ответ
Следите за действиями в своем классе приложений, используя ActivityLifeCycleCallbacks
public class MyApplication extends Application implements my.package.ActivityLifecycleCallbacks{
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityStopped(Activity activity) {
Log.i("Tracking Activity Stopped", activity.getLocalClassName());
}
@Override
public void onActivityStarted(Activity activity) {
Log.i("Tracking Activity Started", activity.getLocalClassName());
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.i("Tracking Activity SaveInstanceState", activity.getLocalClassName());
}
@Override
public void onActivityResumed(Activity activity) {
Log.i("Tracking Activity Resumed", activity.getLocalClassName());
}
@Override
public void onActivityPaused(Activity activity) {
Log.i("Tracking Activity Paused", activity.getLocalClassName());
}
@Override
public void onActivityDestroyed(Activity activity) {
Log.i("Tracking Activity Destroyed", activity.getLocalClassName());
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.i("Tracking Activity Created", activity.getLocalClassName());
}
}
Затем получите onClick уведомления в трансляции, проверьте, открывается ли активность B из класса вашего приложения, и примите решение