summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Lane <lanechr@google.com>2015-02-26 19:11:31 -0800
committerThe Android Automerger <android-build@google.com>2015-03-27 15:02:11 -0700
commitdcd9bcafc6954aa81d7f29d6213fb13af6bad577 (patch)
tree0d9865dfb82da2f6d0fb7f384bf3fdcb294ecde2
parentc7896d66909d5b4c9f44cf0babd8e067231fe868 (diff)
downloadTvSettings-lollipop-mr1-release.tar.gz
Bug: 19536065 Change-Id: Idda0ff64336b16d6b28a7f68eb2d8246985b0fa9
-rw-r--r--Settings/res/drawable-hdpi/ic_settings_home.pngbin0 -> 2778 bytes
-rw-r--r--Settings/res/drawable-mdpi/ic_settings_home.pngbin0 -> 2055 bytes
-rw-r--r--Settings/res/drawable-xhdpi/ic_settings_home.pngbin0 -> 3706 bytes
-rw-r--r--Settings/res/drawable-xxhdpi/ic_settings_home.pngbin0 -> 4326 bytes
-rw-r--r--Settings/res/values/strings.xml2
-rw-r--r--Settings/res/xml/preferences.xml6
-rw-r--r--Settings/src/com/android/tv/settings/BrowseInfo.java34
7 files changed, 42 insertions, 0 deletions
diff --git a/Settings/res/drawable-hdpi/ic_settings_home.png b/Settings/res/drawable-hdpi/ic_settings_home.png
new file mode 100644
index 000000000..09d384abd
--- /dev/null
+++ b/Settings/res/drawable-hdpi/ic_settings_home.png
Binary files differ
diff --git a/Settings/res/drawable-mdpi/ic_settings_home.png b/Settings/res/drawable-mdpi/ic_settings_home.png
new file mode 100644
index 000000000..5965e314e
--- /dev/null
+++ b/Settings/res/drawable-mdpi/ic_settings_home.png
Binary files differ
diff --git a/Settings/res/drawable-xhdpi/ic_settings_home.png b/Settings/res/drawable-xhdpi/ic_settings_home.png
new file mode 100644
index 000000000..693d81f7b
--- /dev/null
+++ b/Settings/res/drawable-xhdpi/ic_settings_home.png
Binary files differ
diff --git a/Settings/res/drawable-xxhdpi/ic_settings_home.png b/Settings/res/drawable-xxhdpi/ic_settings_home.png
new file mode 100644
index 000000000..9c6d5c524
--- /dev/null
+++ b/Settings/res/drawable-xxhdpi/ic_settings_home.png
Binary files differ
diff --git a/Settings/res/values/strings.xml b/Settings/res/values/strings.xml
index b208f1ee3..edf91531d 100644
--- a/Settings/res/values/strings.xml
+++ b/Settings/res/values/strings.xml
@@ -197,6 +197,8 @@
<string name="system_language">Language</string>
<!-- Preference which manages input method settings. [CHAR LIMIT=50] -->
<string name="system_keyboard">Keyboard</string>
+ <!-- Preference which manages home screen settings. [CHAR LIMIT=50] -->
+ <string name="system_home">Home screen</string>
<!-- Preference which manages search and google now settings. [CHAR LIMIT=50] -->
<string name="system_search">Search</string>
<!-- Preference which manages security settings. [CHAR LIMIT=50] -->
diff --git a/Settings/res/xml/preferences.xml b/Settings/res/xml/preferences.xml
index 4666230e0..bb72890f7 100644
--- a/Settings/res/xml/preferences.xml
+++ b/Settings/res/xml/preferences.xml
@@ -40,6 +40,12 @@
android:targetPackage="com.android.tv.settings" />
</Preference>
<Preference
+ android:icon="@drawable/ic_settings_home"
+ android:key="home"
+ android:title="@string/system_home" >
+ <intent android:action="com.google.android.leanbacklauncher.SETTINGS" />
+ </Preference>
+ <Preference
android:icon="@drawable/ic_settings_search"
android:key="search"
android:title="@string/system_search" >
diff --git a/Settings/src/com/android/tv/settings/BrowseInfo.java b/Settings/src/com/android/tv/settings/BrowseInfo.java
index 8f38f821b..e453ab600 100644
--- a/Settings/src/com/android/tv/settings/BrowseInfo.java
+++ b/Settings/src/com/android/tv/settings/BrowseInfo.java
@@ -26,8 +26,10 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.Intent.ShortcutIconResource;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.content.res.TypedArray;
@@ -175,6 +177,7 @@ public class BrowseInfo extends BrowseInfoBase {
private static final String PREF_KEY_WIFI = "network";
private static final String PREF_KEY_DEVELOPER = "developer";
private static final String PREF_KEY_INPUTS = "inputs";
+ private static final String PREF_KEY_HOME = "home";
private final Context mContext;
private final AuthenticatorHelper mAuthenticatorHelper;
@@ -278,6 +281,17 @@ public class BrowseInfo extends BrowseInfoBase {
if (PREF_KEY_ADD_ACCOUNT.equals(key)) {
mAccountHeaderId = mHeaderId;
addAccounts(mRow);
+ } else if (PREF_KEY_HOME.equals(key)) {
+ // Only show home screen setting if there's a system app to handle the intent.
+ Intent recIntent = getIntent(parser, attrs, mHeaderId);
+ if (systemIntentIsHandled(recIntent)) {
+ mRow.add(new MenuItem.Builder()
+ .id(mNextItemId++)
+ .title(title)
+ .imageResourceId(mContext, iconRes)
+ .intent(recIntent)
+ .build());
+ }
} else if ((!key.equals(PREF_KEY_DEVELOPER) || mDeveloperEnabled)
&& (!key.equals(PREF_KEY_INPUTS) || mInputSettingNeeded)) {
MenuItem.TextGetter descriptionGetter = getDescriptionTextGetterFromKey(key);
@@ -572,4 +586,24 @@ public class BrowseInfo extends BrowseInfoBase {
R.drawable.ic_settings_google_account);
return UriUtils.getShortcutIconResourceUri(iconResource).toString();
}
+
+ private boolean systemIntentIsHandled(Intent intent) {
+ if (mContext == null || intent == null) {
+ return false;
+ }
+
+ PackageManager pm = mContext.getPackageManager();
+ if (pm == null) {
+ return false;
+ }
+
+ for (ResolveInfo info : pm.queryIntentActivities(intent, 0)) {
+ if (info.activityInfo != null && info.activityInfo.enabled &&
+ (info.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) ==
+ ApplicationInfo.FLAG_SYSTEM) {
+ return true;
+ }
+ }
+ return false;
+ }
}