Android-返回上一个应用会发出奇怪的消息

时间:2018-09-12 12:26:19

标签: android react-native android-intent back-button

我正在使用以下代码返回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 :(得分:0)

经过一番挖掘,我使用了不同的代码:

@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;
      }
}