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 из класса вашего приложения, и примите решение

Другие вопросы по тегам