diff options
Diffstat (limited to 'core/java/android/app')
-rw-r--r-- | core/java/android/app/ActivityManagerNative.java | 23 | ||||
-rw-r--r-- | core/java/android/app/AssistData.java | 16 | ||||
-rw-r--r-- | core/java/android/app/IActivityManager.java | 5 |
3 files changed, 42 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 47f57ea..fa10893 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -51,6 +51,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.Singleton; import com.android.internal.app.IVoiceInteractor; +import com.android.internal.os.IResultReceiver; import java.util.ArrayList; import java.util.List; @@ -2114,6 +2115,15 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } + case REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { + data.enforceInterface(IActivityManager.descriptor); + int requestType = data.readInt(); + IResultReceiver receiver = IResultReceiver.Stub.asInterface(data.readStrongBinder()); + requestAssistContextExtras(requestType, receiver); + reply.writeNoException(); + return true; + } + case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); @@ -5146,6 +5156,19 @@ class ActivityManagerProxy implements IActivityManager return res; } + public void requestAssistContextExtras(int requestType, IResultReceiver receiver) + throws RemoteException { + Parcel data = Parcel.obtain(); + Parcel reply = Parcel.obtain(); + data.writeInterfaceToken(IActivityManager.descriptor); + data.writeInt(requestType); + data.writeStrongBinder(receiver.asBinder()); + mRemote.transact(REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0); + reply.readException(); + data.recycle(); + reply.recycle(); + } + public void reportAssistContextExtras(IBinder token, Bundle extras) throws RemoteException { Parcel data = Parcel.obtain(); diff --git a/core/java/android/app/AssistData.java b/core/java/android/app/AssistData.java index 8d3d348..7b5eb6d 100644 --- a/core/java/android/app/AssistData.java +++ b/core/java/android/app/AssistData.java @@ -16,6 +16,7 @@ package android.app; +import android.content.ComponentName; import android.graphics.Rect; import android.os.Bundle; import android.os.Parcel; @@ -44,6 +45,8 @@ final public class AssistData implements Parcelable { */ public static final String ASSIST_KEY = "android:assist"; + final ComponentName mActivityComponent; + final ArrayList<ViewNodeImpl> mRootViews = new ArrayList<>(); ViewAssistDataImpl mTmpViewAssistDataImpl = new ViewAssistDataImpl(); @@ -400,6 +403,7 @@ final public class AssistData implements Parcelable { } AssistData(Activity activity) { + mActivityComponent = activity.getComponentName(); ArrayList<ViewRootImpl> views = WindowManagerGlobal.getInstance().getRootViews( activity.getActivityToken()); for (int i=0; i<views.size(); i++) { @@ -414,6 +418,7 @@ final public class AssistData implements Parcelable { } AssistData(Parcel in) { + mActivityComponent = ComponentName.readFromParcel(in); final int N = in.readInt(); for (int i=0; i<N; i++) { mRootViews.add(new ViewNodeImpl(in)); @@ -421,7 +426,9 @@ final public class AssistData implements Parcelable { //dump(); } - void dump() { + /** @hide */ + public void dump() { + Log.i(TAG, "Activity: " + mActivityComponent.flattenToShortString()); ViewNode node = new ViewNode(); final int N = getWindowCount(); for (int i=0; i<N; i++) { @@ -445,7 +452,7 @@ final public class AssistData implements Parcelable { } String text = node.getText(); if (text != null) { - Log.i(TAG, prefix + " Text (sel " + node.getTextSelectionStart() + "-" + Log.i(TAG, prefix + " Text (sel " + node.getTextSelectionStart() + "-" + node.getTextSelectionEnd() + "): " + text); } String hint = node.getHint(); @@ -476,6 +483,10 @@ final public class AssistData implements Parcelable { return assistBundle.getParcelable(ASSIST_KEY); } + public ComponentName getActivityComponent() { + return mActivityComponent; + } + /** * Return the number of window contents that have been collected in this assist data. */ @@ -498,6 +509,7 @@ final public class AssistData implements Parcelable { public void writeToParcel(Parcel out, int flags) { int start = out.dataPosition(); + ComponentName.writeToParcel(mActivityComponent, out); final int N = mRootViews.size(); out.writeInt(N); for (int i=0; i<N; i++) { diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index 467c99a..341a2d7 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -51,6 +51,7 @@ import android.os.RemoteException; import android.os.StrictMode; import android.service.voice.IVoiceInteractionSession; import com.android.internal.app.IVoiceInteractor; +import com.android.internal.os.IResultReceiver; import java.util.List; @@ -419,6 +420,9 @@ public interface IActivityManager extends IInterface { public Bundle getAssistContextExtras(int requestType) throws RemoteException; + public void requestAssistContextExtras(int requestType, IResultReceiver receiver) + throws RemoteException; + public void reportAssistContextExtras(IBinder token, Bundle extras) throws RemoteException; public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle) @@ -804,4 +808,5 @@ public interface IActivityManager extends IInterface { int CREATE_STACK_ON_DISPLAY = IBinder.FIRST_CALL_TRANSACTION+281; int GET_FOCUSED_STACK_ID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+282; int SET_TASK_RESIZEABLE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+283; + int REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+284; } |