我正在使用以下代码返回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应用程序的顶部打开,而当我按下“后退”按钮时,它会显示以下消息:
我想要返回的是上一个应用程序或主屏幕,而没有完成或终止我的应用程序。
我希望它就像我按下多应用程序按钮并选择上一个应用程序而不关闭我的应用程序一样。当我使用后退按钮时,它完成了我的应用程序。 我尝试玩旗标,但没有成功。
有一个Cordova解决方案:https://github.com/mohamed-salah/phonegap-backbutton-plugin/blob/master/src/android/BackbuttonPlugin.java。我的是一个React Native项目。
任何帮助将不胜感激!
答案 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;
}
}