diff options
Diffstat (limited to 'core')
7 files changed, 54 insertions, 35 deletions
diff --git a/core/java/android/app/ISearchManager.aidl b/core/java/android/app/ISearchManager.aidl index 6094012..0d09e4a 100644 --- a/core/java/android/app/ISearchManager.aidl +++ b/core/java/android/app/ISearchManager.aidl @@ -30,6 +30,6 @@ interface ISearchManager { List<ResolveInfo> getGlobalSearchActivities(); ComponentName getGlobalSearchActivity(); ComponentName getWebSearchActivity(); - ComponentName getAssistIntent(int userHandle); - boolean launchAssistAction(String hint, int userHandle, in Bundle args); + void launchAssist(in Bundle args); + boolean launchLegacyAssist(String hint, int userHandle, in Bundle args); } diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index 45799a1..9e32164 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -946,27 +946,9 @@ public class SearchManager * * @hide */ - public Intent getAssistIntent(Context context, boolean inclContext) { - return getAssistIntent(context, inclContext, UserHandle.myUserId()); - } - - /** - * Gets an intent for launching installed assistant activity, or null if not available. - * @return The assist intent. - * - * @hide - */ - public Intent getAssistIntent(Context context, boolean inclContext, int userHandle) { + public Intent getAssistIntent(boolean inclContext) { try { - if (mService == null) { - return null; - } - ComponentName comp = mService.getAssistIntent(userHandle); - if (comp == null) { - return null; - } Intent intent = new Intent(Intent.ACTION_ASSIST); - intent.setComponent(comp); if (inclContext) { IActivityManager am = ActivityManagerNative.getDefault(); Bundle extras = am.getAssistContextExtras(ActivityManager.ASSIST_CONTEXT_BASIC); @@ -982,17 +964,38 @@ public class SearchManager } /** - * Launch an assist action for the current top activity. + * Starts the assistant. + * + * @param args the args to pass to the assistant + * + * @hide + */ + public void launchAssist(Bundle args) { + try { + if (mService == null) { + return; + } + mService.launchAssist(args); + } catch (RemoteException re) { + Log.e(TAG, "launchAssist() failed: " + re); + } + } + + /** + * Starts the legacy assistant (i.e. the {@link Intent#ACTION_ASSIST}). + * + * @param args the args to pass to the assistant + * * @hide */ - public boolean launchAssistAction(String hint, int userHandle, Bundle args) { + public boolean launchLegacyAssist(String hint, int userHandle, Bundle args) { try { if (mService == null) { return false; } - return mService.launchAssistAction(hint, userHandle, args); + return mService.launchLegacyAssist(hint, userHandle, args); } catch (RemoteException re) { - Log.e(TAG, "launchAssistAction() failed: " + re); + Log.e(TAG, "launchAssist() failed: " + re); return false; } } diff --git a/core/java/com/android/internal/app/AssistUtils.java b/core/java/com/android/internal/app/AssistUtils.java index b520384..6ba09c9 100644 --- a/core/java/com/android/internal/app/AssistUtils.java +++ b/core/java/com/android/internal/app/AssistUtils.java @@ -20,6 +20,9 @@ import android.app.SearchManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.provider.Settings; @@ -42,9 +45,10 @@ public class AssistUtils { ServiceManager.getService(Context.VOICE_INTERACTION_MANAGER_SERVICE)); } - public void showSessionForActiveService(IVoiceInteractionSessionShowCallback showCallback) { + public void showSessionForActiveService(Bundle args, + IVoiceInteractionSessionShowCallback showCallback) { try { - mVoiceInteractionManagerService.showSessionForActiveService(showCallback); + mVoiceInteractionManagerService.showSessionForActiveService(args, showCallback); } catch (RemoteException e) { Log.w(TAG, "Failed to call showSessionForActiveService", e); } @@ -118,11 +122,14 @@ public class AssistUtils { } Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) - .getAssistIntent(mContext, false, userId); - if (intent != null) { - return intent.getComponent(); + .getAssistIntent(false); + PackageManager pm = mContext.getPackageManager(); + ResolveInfo info = pm.resolveActivityAsUser(intent, PackageManager.MATCH_DEFAULT_ONLY, + userId); + if (info != null) { + return new ComponentName(info.activityInfo.applicationInfo.packageName, + info.activityInfo.name); } - return null; } diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl index 8cd9bab..7f54f50 100644 --- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl +++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl @@ -93,9 +93,11 @@ interface IVoiceInteractionManagerService { * Shows the session for the currently active service. Used to start a new session from system * affordances. * + * @param args the bundle to pass as arguments to the voice interaction session * @param showCallback callback to be notified when the session was shown */ - void showSessionForActiveService(IVoiceInteractionSessionShowCallback showCallback); + void showSessionForActiveService(in Bundle args, + IVoiceInteractionSessionShowCallback showCallback); /** * Hides the session from the active service, if it is showing. diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java index 0abd200..016d010 100644 --- a/core/java/com/android/internal/policy/PhoneWindow.java +++ b/core/java/com/android/internal/policy/PhoneWindow.java @@ -4419,7 +4419,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { Bundle args = new Bundle(); args.putInt(Intent.EXTRA_ASSIST_INPUT_DEVICE_ID, event.getDeviceId()); return ((SearchManager)getContext().getSystemService(Context.SEARCH_SERVICE)) - .launchAssistAction(null, UserHandle.myUserId(), args); + .launchLegacyAssist(null, UserHandle.myUserId(), args); } return result; } diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index 0732add..c1645c3 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -16,9 +16,11 @@ package com.android.internal.statusbar; -import com.android.internal.statusbar.StatusBarIcon; +import android.os.Bundle; import android.service.notification.StatusBarNotification; +import com.android.internal.statusbar.StatusBarIcon; + /** @hide */ oneway interface IStatusBar { @@ -66,5 +68,6 @@ oneway interface IStatusBar void appTransitionStarting(long statusBarAnimationsStartTime, long statusBarAnimationsDuration); void showAssistDisclosure(); + void startAssist(in Bundle args); } diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 63bfbe5..7db2cc9 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -16,11 +16,13 @@ package com.android.internal.statusbar; +import android.os.Bundle; +import android.service.notification.StatusBarNotification; + import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.statusbar.StatusBarIconList; import com.android.internal.statusbar.NotificationVisibility; -import android.service.notification.StatusBarNotification; /** @hide */ interface IStatusBarService @@ -86,4 +88,6 @@ interface IStatusBarService * bar caused by this app transition in millis */ void appTransitionStarting(long statusBarAnimationsStartTime, long statusBarAnimationsDuration); + + void startAssist(in Bundle args); } |