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

Я использую этот код, чтобы вернуться к предыдущему действию в Android:

@ReactMethod
  public void  goBack()
  {
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    MainApplication.getContext().startActivity(startMain);
  }

Проблема в том, что когда я открываю ссылку (глубокую ссылку), например, из Gmail, мое приложение открывается поверхприложение Gmail, и когда я нажимаю кнопку «Назад», отображается следующее сообщение: enter image description here

Мне нужно вернуться к предыдущему приложению или на главный экран.без завершения или уничтожения моего приложения.

Я хочу, чтобы оно было таким, как если бы я нажал кнопку нескольких приложений и выбрал предыдущее приложение, не закрывая свое приложение.Когда я использую кнопку «Назад», она закрывает мое приложение.Я пытался играть с флагами, но безуспешно.

Для этого есть решение Cordova: https://github.com/mohamed-salah/phonegap-backbutton-plugin/blob/master/src/android/BackbuttonPlugin.java. Мой проект React Native.

Любая помощь будет высоко оценена!

1 Ответ

0 голосов
/ 20 сентября 2018

После некоторого копания я использовал другой код:

@ReactMethod
  public void  goBack()
  {
    MainApplication.getCurrentActivity().moveTaskToBack (true);

  }

В MainApplication.java:

public class MainApplication extends Application implements ReactApplication 
{


    private static Activity currentActivity;

    @Override
      public void onCreate() {
        super.onCreate();

        // Used for BackButton Module
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
          @Override
          public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
              MainApplication.currentActivity = activity;
          }

          @Override
          public void onActivityStarted(Activity activity) {
              MainApplication.currentActivity = activity;
          }

          @Override
          public void onActivityResumed(Activity activity) {
              MainApplication.currentActivity = activity;
          }

          @Override
          public void onActivityPaused(Activity activity) {
              MainApplication.currentActivity = null;
          }

          @Override
          public void onActivityStopped(Activity activity) {
              // don't clear current activity because activity may get stopped after
              // the new activity is resumed
          }

          @Override
          public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

          }

          @Override
          public void onActivityDestroyed(Activity activity) {
              // don't clear current activity because activity may get destroyed after
              // the new activity is resumed
          }
      });
      }
      public static Activity getCurrentActivity()
      {
          return currentActivity;
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...