Android при нажатии на уведомление об открытии активности на основе условия - PullRequest
0 голосов
/ 25 мая 2018

У меня есть два действия: 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 Ответ

0 голосов
/ 25 мая 2018

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

...