diff options
Diffstat (limited to 'core/java/android/app/ActivityManagerNative.java')
-rw-r--r-- | core/java/android/app/ActivityManagerNative.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 2e39c10..6849fd7 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -146,6 +146,28 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } + case START_ACTIVITY_AND_WAIT_TRANSACTION: + { + data.enforceInterface(IActivityManager.descriptor); + IBinder b = data.readStrongBinder(); + IApplicationThread app = ApplicationThreadNative.asInterface(b); + Intent intent = Intent.CREATOR.createFromParcel(data); + String resolvedType = data.readString(); + Uri[] grantedUriPermissions = data.createTypedArray(Uri.CREATOR); + int grantedMode = data.readInt(); + IBinder resultTo = data.readStrongBinder(); + String resultWho = data.readString(); + int requestCode = data.readInt(); + boolean onlyIfNeeded = data.readInt() != 0; + boolean debug = data.readInt() != 0; + WaitResult result = startActivityAndWait(app, intent, resolvedType, + grantedUriPermissions, grantedMode, resultTo, resultWho, + requestCode, onlyIfNeeded, debug); + reply.writeNoException(); + result.writeToParcel(reply, 0); + return true; + } + case START_ACTIVITY_INTENT_SENDER_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); @@ -1238,6 +1260,31 @@ class ActivityManagerProxy implements IActivityManager data.recycle(); return result; } + public WaitResult startActivityAndWait(IApplicationThread caller, Intent intent, + String resolvedType, Uri[] grantedUriPermissions, int grantedMode, + IBinder resultTo, String resultWho, + int requestCode, boolean onlyIfNeeded, + boolean debug) throws RemoteException { + Parcel data = Parcel.obtain(); + Parcel reply = Parcel.obtain(); + data.writeInterfaceToken(IActivityManager.descriptor); + data.writeStrongBinder(caller != null ? caller.asBinder() : null); + intent.writeToParcel(data, 0); + data.writeString(resolvedType); + data.writeTypedArray(grantedUriPermissions, 0); + data.writeInt(grantedMode); + data.writeStrongBinder(resultTo); + data.writeString(resultWho); + data.writeInt(requestCode); + data.writeInt(onlyIfNeeded ? 1 : 0); + data.writeInt(debug ? 1 : 0); + mRemote.transact(START_ACTIVITY_AND_WAIT_TRANSACTION, data, reply, 0); + reply.readException(); + WaitResult result = WaitResult.CREATOR.createFromParcel(reply); + reply.recycle(); + data.recycle(); + return result; + } public int startActivityIntentSender(IApplicationThread caller, IntentSender intent, Intent fillInIntent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, |