startActivity(): implement Intent.FLAG_ACTIVITY_CLEAR_TOP

This commit is contained in:
Julian Winkler
2025-07-25 16:41:59 +02:00
parent 9e27cccc0d
commit a9f68c976b
7 changed files with 50 additions and 2 deletions

View File

@@ -586,6 +586,7 @@ public class Activity extends ContextThemeWrapper implements Window.Callback, La
private native void nativeFinish(long native_window);
public static native void nativeStartActivity(Activity activity);
public static native void nativeResumeActivity(Class<? extends Activity> activityClass, Intent intent);
public static native void nativeOpenURI(String uri);
public native void nativeFileChooser(int action, String type, String title, int requestCode);
public void reportFullyDrawn() {}

View File

@@ -622,8 +622,12 @@ public class Context extends Object {
@Override
public void run() {
try {
Activity activity = Activity.internalCreateActivity(className_, this_application.native_window, intent_);
Activity.nativeStartActivity(activity);
if ((intent_.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0 && intent_.getComponent() != null) {
Activity.nativeResumeActivity(Class.forName(intent_.getComponent().getClassName()).asSubclass(Activity.class), intent_);
} else {
Activity activity = Activity.internalCreateActivity(className_, this_application.native_window, intent_);
Activity.nativeStartActivity(activity);
}
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -17,6 +17,7 @@ import java.util.Set;
public class Intent implements Parcelable {
public static final String ACTION_MAIN = "android.intent.action.MAIN";
public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000;
public static final int FLAG_ACTIVITY_CLEAR_TOP = 0x04000000;
private ComponentName component;
private Bundle extras = new Bundle();