@Override public Object afterCall(Object who, Method method, Object[] args, Object result) throws Throwable { IBinder token = (IBinder) args[0]; ActivityClientRecord r = VActivityManager.get().getActivityRecord(token); boolean taskRemoved = VActivityManager.get().onActivityDestroy(token); if (!taskRemoved && r != null && r.activity != null && r.info.getThemeResource() != 0) { try { TypedValue out = new TypedValue(); Resources.Theme theme = r.activity.getResources().newTheme(); theme.applyStyle(r.info.getThemeResource(), true); if (theme.resolveAttribute(android.R.attr.windowAnimationStyle, out, true)) { TypedArray array = theme.obtainStyledAttributes(out.data, new int[]{ android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation }); r.activity.overridePendingTransition(array.getResourceId(0, 0), array.getResourceId(1, 0)); array.recycle(); } } catch (Throwable e) { e.printStackTrace(); } } return super.afterCall(who, method, args, result); }
ActivityClientRecord r = VActivityManager.get().getActivityRecord(resultTo); if (r != null && r.activity != null) { try {
public void finishActivity(IBinder token) { ActivityClientRecord r = getActivityRecord(token); if (r != null) { Activity activity = r.activity; while (true) { // We shouldn't use Activity.getParent(), // because It may be overwritten. Activity parent = mirror.android.app.Activity.mParent.get(activity); if (parent == null) { break; } activity = parent; } // We shouldn't use Activity.isFinishing(), // because It may be overwritten. if (!mirror.android.app.Activity.mFinished.get(activity)) { int resultCode = mirror.android.app.Activity.mResultCode.get(activity); Intent resultData = mirror.android.app.Activity.mResultData.get(activity); ActivityManagerCompat.finishActivity(token, resultCode, resultData); mirror.android.app.Activity.mFinished.set(activity, true); } } }
ActivityClientRecord r = VActivityManager.get().getActivityRecord(token); if (r != null) { r.activity = activity;
@Override public Object afterCall(Object who, Method method, Object[] args, Object result) throws Throwable { IBinder token = (IBinder) args[0]; ActivityClientRecord r = VActivityManager.get().getActivityRecord(token); boolean taskRemoved = VActivityManager.get().onActivityDestroy(token); if (!taskRemoved && r != null && r.activity != null && r.info.getThemeResource() != 0) { try { TypedValue out = new TypedValue(); Resources.Theme theme = r.activity.getResources().newTheme(); theme.applyStyle(r.info.getThemeResource(), true); if (theme.resolveAttribute(android.R.attr.windowAnimationStyle, out, true)) { TypedArray array = theme.obtainStyledAttributes(out.data, new int[]{ android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation }); r.activity.overridePendingTransition(array.getResourceId(0, 0), array.getResourceId(1, 0)); array.recycle(); } } catch (Throwable e) { e.printStackTrace(); } } return super.afterCall(who, method, args, result); }
@Override public Object afterCall(Object who, Method method, Object[] args, Object result) throws Throwable { IBinder token = (IBinder) args[0]; ActivityClientRecord r = VActivityManager.get().getActivityRecord(token); boolean taskRemoved = VActivityManager.get().onActivityDestroy(token); if (!taskRemoved && r != null && r.activity != null && r.info.getThemeResource() != 0) { try { TypedValue out = new TypedValue(); Resources.Theme theme = r.activity.getResources().newTheme(); theme.applyStyle(r.info.getThemeResource(), true); if (theme.resolveAttribute(android.R.attr.windowAnimationStyle, out, true)) { TypedArray array = theme.obtainStyledAttributes(out.data, new int[]{ android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation }); r.activity.overridePendingTransition(array.getResourceId(0, 0), array.getResourceId(1, 0)); array.recycle(); } } catch (Throwable e) { e.printStackTrace(); } } return super.afterCall(who, method, args, result); }
ActivityClientRecord r = VActivityManager.get().getActivityRecord(resultTo); if (r != null && r.activity != null) { try {
ActivityClientRecord r = VActivityManager.get().getActivityRecord(resultTo); if (r != null && r.activity != null) { try {
public void finishActivity(IBinder token) { ActivityClientRecord r = getActivityRecord(token); if (r != null) { Activity activity = r.activity; while (true) { // We shouldn't use Activity.getParent(), // because It may be overwritten. Activity parent = mirror.android.app.Activity.mParent.get(activity); if (parent == null) { break; } activity = parent; } // We shouldn't use Activity.isFinishing(), // because It may be overwritten. if (!mirror.android.app.Activity.mFinished.get(activity)) { int resultCode = mirror.android.app.Activity.mResultCode.get(activity); Intent resultData = mirror.android.app.Activity.mResultData.get(activity); ActivityManagerCompat.finishActivity(token, resultCode, resultData); mirror.android.app.Activity.mFinished.set(activity, true); } } }
public void finishActivity(IBinder token) { ActivityClientRecord r = getActivityRecord(token); if (r != null) { Activity activity = r.activity; while (true) { // We shouldn't use Activity.getParent(), // because It may be overwritten. Activity parent = mirror.android.app.Activity.mParent.get(activity); if (parent == null) { break; } activity = parent; } // We shouldn't use Activity.isFinishing(), // because It may be overwritten. if (!mirror.android.app.Activity.mFinished.get(activity)) { int resultCode = mirror.android.app.Activity.mResultCode.get(activity); Intent resultData = mirror.android.app.Activity.mResultData.get(activity); ActivityManagerCompat.finishActivity(token, resultCode, resultData); mirror.android.app.Activity.mFinished.set(activity, true); } } }
ActivityClientRecord r = VActivityManager.get().getActivityRecord(token); if (r != null) { r.activity = activity;
@Override public void callActivityOnCreate(Activity activity, Bundle icicle) { if (icicle != null) { BundleCompat.clearParcelledData(icicle); } VirtualCore.get().getComponentDelegate().beforeActivityCreate(activity); IBinder token = mirror.android.app.Activity.mToken.get(activity); ActivityClientRecord r = VActivityManager.get().getActivityRecord(token); if (r != null) { r.activity = activity; } ContextFixer.fixContext(activity); ActivityFixer.fixActivity(activity); ActivityInfo info = null; if (r != null) { info = r.info; } if (info != null) { if (info.theme != 0) { activity.setTheme(info.theme); } if (activity.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED && info.screenOrientation != ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) { activity.setRequestedOrientation(info.screenOrientation); } } super.callActivityOnCreate(activity, icicle); VirtualCore.get().getComponentDelegate().afterActivityCreate(activity); }