Merge "Make ASSIST launch VIS and add a keycode for TV (ALL_APPS)" into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c07c23b1f7
@@ -804,8 +804,11 @@ public class KeyEvent extends InputEvent implements Parcelable {
|
|||||||
public static final int KEYCODE_SYSTEM_NAVIGATION_LEFT = 282;
|
public static final int KEYCODE_SYSTEM_NAVIGATION_LEFT = 282;
|
||||||
/** Key code constant: Consumed by the system for navigation right */
|
/** Key code constant: Consumed by the system for navigation right */
|
||||||
public static final int KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283;
|
public static final int KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283;
|
||||||
|
/** Key code constant: Show all apps
|
||||||
|
* @hide */
|
||||||
|
public static final int KEYCODE_ALL_APPS = 284;
|
||||||
|
|
||||||
private static final int LAST_KEYCODE = KEYCODE_SYSTEM_NAVIGATION_RIGHT;
|
private static final int LAST_KEYCODE = KEYCODE_ALL_APPS;
|
||||||
|
|
||||||
// NOTE: If you add a new keycode here you must also add it to:
|
// NOTE: If you add a new keycode here you must also add it to:
|
||||||
// isSystem()
|
// isSystem()
|
||||||
|
|||||||
@@ -1888,6 +1888,7 @@
|
|||||||
<enum name="KEYCODE_SYSTEM_NAVIGATION_DOWN" value="281" />
|
<enum name="KEYCODE_SYSTEM_NAVIGATION_DOWN" value="281" />
|
||||||
<enum name="KEYCODE_SYSTEM_NAVIGATION_LEFT" value="282" />
|
<enum name="KEYCODE_SYSTEM_NAVIGATION_LEFT" value="282" />
|
||||||
<enum name="KEYCODE_SYSTEM_NAVIGATION_RIGHT" value="283" />
|
<enum name="KEYCODE_SYSTEM_NAVIGATION_RIGHT" value="283" />
|
||||||
|
<enum name="KEYCODE_ALL_APPS" value="284" />
|
||||||
</attr>
|
</attr>
|
||||||
|
|
||||||
<!-- ***************************************************************** -->
|
<!-- ***************************************************************** -->
|
||||||
|
|||||||
@@ -13110,7 +13110,6 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We are now ready to launch the assist activity.
|
// We are now ready to launch the assist activity.
|
||||||
IResultReceiver sendReceiver = null;
|
IResultReceiver sendReceiver = null;
|
||||||
Bundle sendBundle = null;
|
Bundle sendBundle = null;
|
||||||
@@ -13140,17 +13139,24 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
long ident = Binder.clearCallingIdentity();
|
final long ident = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
pae.intent.replaceExtras(pae.extras);
|
if (TextUtils.equals(pae.intent.getAction(),
|
||||||
pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
android.service.voice.VoiceInteractionService.SERVICE_INTERFACE)) {
|
||||||
| Intent.FLAG_ACTIVITY_SINGLE_TOP
|
pae.intent.putExtras(pae.extras);
|
||||||
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
mContext.startServiceAsUser(pae.intent, new UserHandle(pae.userHandle));
|
||||||
closeSystemDialogs("assist");
|
} else {
|
||||||
try {
|
pae.intent.replaceExtras(pae.extras);
|
||||||
mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle));
|
pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
} catch (ActivityNotFoundException e) {
|
| Intent.FLAG_ACTIVITY_SINGLE_TOP
|
||||||
Slog.w(TAG, "No activity to handle assist action.", e);
|
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
|
closeSystemDialogs("assist");
|
||||||
|
|
||||||
|
try {
|
||||||
|
mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle));
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
Slog.w(TAG, "No activity to handle assist action.", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(ident);
|
Binder.restoreCallingIdentity(ident);
|
||||||
|
|||||||
@@ -835,6 +835,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
private static final int MSG_BUGREPORT_TV = 22;
|
private static final int MSG_BUGREPORT_TV = 22;
|
||||||
private static final int MSG_ACCESSIBILITY_TV = 23;
|
private static final int MSG_ACCESSIBILITY_TV = 23;
|
||||||
private static final int MSG_DISPATCH_BACK_KEY_TO_AUTOFILL = 24;
|
private static final int MSG_DISPATCH_BACK_KEY_TO_AUTOFILL = 24;
|
||||||
|
private static final int MSG_HANDLE_ALL_APPS = 25;
|
||||||
|
|
||||||
private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0;
|
private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0;
|
||||||
private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION = 1;
|
private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION = 1;
|
||||||
@@ -924,6 +925,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
case MSG_DISPATCH_BACK_KEY_TO_AUTOFILL:
|
case MSG_DISPATCH_BACK_KEY_TO_AUTOFILL:
|
||||||
mAutofillManagerInternal.onBackKeyPressed();
|
mAutofillManagerInternal.onBackKeyPressed();
|
||||||
break;
|
break;
|
||||||
|
case MSG_HANDLE_ALL_APPS:
|
||||||
|
launchAllAppsAction();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1785,6 +1789,17 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
|
|
||||||
private void launchAllAppsAction() {
|
private void launchAllAppsAction() {
|
||||||
Intent intent = new Intent(Intent.ACTION_ALL_APPS);
|
Intent intent = new Intent(Intent.ACTION_ALL_APPS);
|
||||||
|
if (mHasFeatureLeanback) {
|
||||||
|
final PackageManager pm = mContext.getPackageManager();
|
||||||
|
Intent intentLauncher = new Intent(Intent.ACTION_MAIN);
|
||||||
|
intentLauncher.addCategory(Intent.CATEGORY_HOME);
|
||||||
|
ResolveInfo resolveInfo = pm.resolveActivityAsUser(intentLauncher,
|
||||||
|
PackageManager.MATCH_SYSTEM_ONLY,
|
||||||
|
mCurrentUserId);
|
||||||
|
if (resolveInfo != null) {
|
||||||
|
intent.setPackage(resolveInfo.activityInfo.packageName);
|
||||||
|
}
|
||||||
|
}
|
||||||
startActivityAsUser(intent, UserHandle.CURRENT);
|
startActivityAsUser(intent, UserHandle.CURRENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3620,6 +3635,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
if (interceptAccessibilityGestureTv()) {
|
if (interceptAccessibilityGestureTv()) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
} else if (keyCode == KeyEvent.KEYCODE_ALL_APPS) {
|
||||||
|
if (!down) {
|
||||||
|
mHandler.removeMessages(MSG_HANDLE_ALL_APPS);
|
||||||
|
Message msg = mHandler.obtainMessage(MSG_HANDLE_ALL_APPS);
|
||||||
|
msg.setAsynchronous(true);
|
||||||
|
msg.sendToTarget();
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toggle Caps Lock on META-ALT.
|
// Toggle Caps Lock on META-ALT.
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package com.android.server.search;
|
package com.android.server.search;
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.AppGlobals;
|
|
||||||
import android.app.IActivityManager;
|
import android.app.IActivityManager;
|
||||||
import android.app.ISearchManager;
|
import android.app.ISearchManager;
|
||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
@@ -26,7 +25,6 @@ import android.content.ComponentName;
|
|||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.IPackageManager;
|
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
@@ -37,6 +35,7 @@ import android.os.RemoteException;
|
|||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.service.voice.VoiceInteractionService;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
@@ -272,24 +271,25 @@ public class SearchManagerService extends ISearchManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check and return VIS component
|
||||||
private ComponentName getLegacyAssistComponent(int userHandle) {
|
private ComponentName getLegacyAssistComponent(int userHandle) {
|
||||||
try {
|
try {
|
||||||
userHandle = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
|
userHandle = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
|
||||||
Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent", null);
|
Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent",
|
||||||
IPackageManager pm = AppGlobals.getPackageManager();
|
null);
|
||||||
Intent assistIntent = new Intent(Intent.ACTION_ASSIST);
|
PackageManager pm = mContext.getPackageManager();
|
||||||
ResolveInfo info =
|
Intent intentAssistProbe = new Intent(VoiceInteractionService.SERVICE_INTERFACE);
|
||||||
pm.resolveIntent(assistIntent,
|
List<ResolveInfo> infoListVis = pm.queryIntentServicesAsUser(intentAssistProbe,
|
||||||
assistIntent.resolveTypeIfNeeded(mContext.getContentResolver()),
|
PackageManager.MATCH_SYSTEM_ONLY, userHandle);
|
||||||
PackageManager.MATCH_DEFAULT_ONLY, userHandle);
|
if (infoListVis == null || infoListVis.isEmpty()) {
|
||||||
if (info != null) {
|
return null;
|
||||||
|
} else {
|
||||||
|
ResolveInfo rInfo = infoListVis.get(0);
|
||||||
return new ComponentName(
|
return new ComponentName(
|
||||||
info.activityInfo.applicationInfo.packageName,
|
rInfo.serviceInfo.applicationInfo.packageName,
|
||||||
info.activityInfo.name);
|
rInfo.serviceInfo.name);
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (RemoteException re) {
|
|
||||||
// Local call
|
|
||||||
Log.e(TAG, "RemoteException in getLegacyAssistComponent: " + re);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, "Exception in getLegacyAssistComponent: " + e);
|
Log.e(TAG, "Exception in getLegacyAssistComponent: " + e);
|
||||||
}
|
}
|
||||||
@@ -304,9 +304,15 @@ public class SearchManagerService extends ISearchManager.Stub {
|
|||||||
}
|
}
|
||||||
long ident = Binder.clearCallingIdentity();
|
long ident = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
Intent intent = new Intent(Intent.ACTION_ASSIST);
|
Intent intent = new Intent(VoiceInteractionService.SERVICE_INTERFACE);
|
||||||
intent.setComponent(comp);
|
intent.setComponent(comp);
|
||||||
|
|
||||||
IActivityManager am = ActivityManager.getService();
|
IActivityManager am = ActivityManager.getService();
|
||||||
|
if (args != null) {
|
||||||
|
args.putInt(Intent.EXTRA_KEY_EVENT, android.view.KeyEvent.KEYCODE_ASSIST);
|
||||||
|
}
|
||||||
|
intent.putExtras(args);
|
||||||
|
|
||||||
return am.launchAssistIntent(intent, ActivityManager.ASSIST_CONTEXT_BASIC, hint,
|
return am.launchAssistIntent(intent, ActivityManager.ASSIST_CONTEXT_BASIC, hint,
|
||||||
userHandle, args);
|
userHandle, args);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user