summaryrefslogtreecommitdiffstats
path: root/core/java/android/app
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2014-10-08 17:43:48 -0700
committerDianne Hackborn <hackbod@google.com>2014-10-09 10:37:19 -0700
commitfdf5b35ab46639759d6389a4e2a4d5799cb6814b (patch)
tree2d8e17d3f7323290237308f40dccd5bdd7890f46 /core/java/android/app
parent5e5bc4b13cd1fc657da940c14e2333d8d3b18080 (diff)
downloadframeworks_base-fdf5b35ab46639759d6389a4e2a4d5799cb6814b.zip
frameworks_base-fdf5b35ab46639759d6389a4e2a4d5799cb6814b.tar.gz
frameworks_base-fdf5b35ab46639759d6389a4e2a4d5799cb6814b.tar.bz2
Implement issue #17906468: Allow search request to fall back to global search
Change-Id: I04834b2a9f1ec4a68c6a3fed14da2f8dd93b3be7
Diffstat (limited to 'core/java/android/app')
-rw-r--r--core/java/android/app/Activity.java18
-rw-r--r--core/java/android/app/ActivityManagerNative.java31
-rw-r--r--core/java/android/app/IActivityManager.java4
-rw-r--r--core/java/android/app/ISearchManager.aidl1
-rw-r--r--core/java/android/app/SearchManager.java16
5 files changed, 65 insertions, 5 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 9f683e3..0e98175 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -3498,14 +3498,24 @@ public class Activity extends ContextThemeWrapper
* <p>You can override this function to force global search, e.g. in response to a dedicated
* search key, or to block search entirely (by simply returning false).
*
- * @return Returns {@code true} if search launched, and {@code false} if activity blocks it.
- * The default implementation always returns {@code true}.
+ * <p>Note: when running in a {@link Configuration#UI_MODE_TYPE_TELEVISION}, the default
+ * implementation changes to simply return false and you must supply your own custom
+ * implementation if you want to support search.</p>
+ *
+ * @return Returns {@code true} if search launched, and {@code false} if the activity does
+ * not respond to search. The default implementation always returns {@code true}, except
+ * when in {@link Configuration#UI_MODE_TYPE_TELEVISION} mode where it returns false.
*
* @see android.app.SearchManager
*/
public boolean onSearchRequested() {
- startSearch(null, false, null, false);
- return true;
+ if ((getResources().getConfiguration().uiMode&Configuration.UI_MODE_TYPE_MASK)
+ != Configuration.UI_MODE_TYPE_TELEVISION) {
+ startSearch(null, false, null, false);
+ return true;
+ } else {
+ return false;
+ }
}
/**
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 11470e3..6c67c09 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -1929,7 +1929,7 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
case IS_INTENT_SENDER_TARGETED_TO_PACKAGE_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
IIntentSender r = IIntentSender.Stub.asInterface(
- data.readStrongBinder());
+ data.readStrongBinder());
boolean res = isIntentSenderTargetedToPackage(r);
reply.writeNoException();
reply.writeInt(res ? 1 : 0);
@@ -2102,6 +2102,18 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
return true;
}
+ case LAUNCH_ASSIST_INTENT_TRANSACTION: {
+ data.enforceInterface(IActivityManager.descriptor);
+ Intent intent = Intent.CREATOR.createFromParcel(data);
+ int requestType = data.readInt();
+ String hint = data.readString();
+ int userHandle = data.readInt();
+ boolean res = launchAssistIntent(intent, requestType, hint, userHandle);
+ reply.writeNoException();
+ reply.writeInt(res ? 1 : 0);
+ return true;
+ }
+
case KILL_UID_TRANSACTION: {
data.enforceInterface(IActivityManager.descriptor);
int uid = data.readInt();
@@ -5039,6 +5051,23 @@ class ActivityManagerProxy implements IActivityManager
reply.recycle();
}
+ public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle)
+ throws RemoteException {
+ Parcel data = Parcel.obtain();
+ Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken(IActivityManager.descriptor);
+ intent.writeToParcel(data, 0);
+ data.writeInt(requestType);
+ data.writeString(hint);
+ data.writeInt(userHandle);
+ mRemote.transact(LAUNCH_ASSIST_INTENT_TRANSACTION, data, reply, 0);
+ reply.readException();
+ boolean res = reply.readInt() != 0;
+ data.recycle();
+ reply.recycle();
+ return res;
+ }
+
public void killUid(int uid, String reason) throws RemoteException {
Parcel data = Parcel.obtain();
Parcel reply = Parcel.obtain();
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index aa5fea0..b72addf 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -417,6 +417,9 @@ public interface IActivityManager extends IInterface {
public void reportAssistContextExtras(IBinder token, Bundle extras) throws RemoteException;
+ public boolean launchAssistIntent(Intent intent, int requestType, String hint, int userHandle)
+ throws RemoteException;
+
public void killUid(int uid, String reason) throws RemoteException;
public void hang(IBinder who, boolean allowRestart) throws RemoteException;
@@ -777,4 +780,5 @@ public interface IActivityManager extends IInterface {
int RELEASE_SOME_ACTIVITIES_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+236;
int BOOT_ANIMATION_COMPLETE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+237;
int GET_TASK_DESCRIPTION_ICON_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+238;
+ int LAUNCH_ASSIST_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+239;
}
diff --git a/core/java/android/app/ISearchManager.aidl b/core/java/android/app/ISearchManager.aidl
index 074d343..03e7ff4 100644
--- a/core/java/android/app/ISearchManager.aidl
+++ b/core/java/android/app/ISearchManager.aidl
@@ -31,4 +31,5 @@ interface ISearchManager {
ComponentName getGlobalSearchActivity();
ComponentName getWebSearchActivity();
ComponentName getAssistIntent(int userHandle);
+ boolean launchAssistAction(int requestType, String hint, int userHandle);
}
diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java
index 4c253f3..a40b29a 100644
--- a/core/java/android/app/SearchManager.java
+++ b/core/java/android/app/SearchManager.java
@@ -989,4 +989,20 @@ public class SearchManager
return null;
}
}
+
+ /**
+ * Launch an assist action for the current top activity.
+ * @hide
+ */
+ public boolean launchAssistAction(int requestType, String hint, int userHandle) {
+ try {
+ if (mService == null) {
+ return false;
+ }
+ return mService.launchAssistAction(requestType, hint, userHandle);
+ } catch (RemoteException re) {
+ Log.e(TAG, "launchAssistAction() failed: " + re);
+ return false;
+ }
+ }
}