diff options
author | Christopher Lane <lanechr@google.com> | 2015-03-27 21:10:54 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-03-27 21:10:54 +0000 |
commit | 1ab877aab81ea190568a2640bc5b99ce3de676e9 (patch) | |
tree | 29043feb6c6faea0810cff7f109d58962bebc690 | |
parent | cef11e1879dae226a6edb25e29e296854cd8cff8 (diff) | |
parent | 89a8f59735c2a485eff0da3a3c94c15c69d85da7 (diff) | |
download | TvSettings-android-5.1.1_r12.tar.gz |
am 89a8f597: DO NOT MERGE : Add link to home screen settingsandroid-5.1.1_r5android-5.1.1_r28android-5.1.1_r22android-5.1.1_r17android-5.1.1_r12lollipop-mr1-wfc-release
* commit '89a8f59735c2a485eff0da3a3c94c15c69d85da7':
DO NOT MERGE : Add link to home screen settings
-rw-r--r-- | Settings/res/drawable-hdpi/ic_settings_home.png | bin | 0 -> 2778 bytes | |||
-rw-r--r-- | Settings/res/drawable-mdpi/ic_settings_home.png | bin | 0 -> 2055 bytes | |||
-rw-r--r-- | Settings/res/drawable-xhdpi/ic_settings_home.png | bin | 0 -> 3706 bytes | |||
-rw-r--r-- | Settings/res/drawable-xxhdpi/ic_settings_home.png | bin | 0 -> 4326 bytes | |||
-rw-r--r-- | Settings/res/values/strings.xml | 2 | ||||
-rw-r--r-- | Settings/res/xml/preferences.xml | 6 | ||||
-rw-r--r-- | Settings/src/com/android/tv/settings/BrowseInfo.java | 34 |
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 Binary files differnew file mode 100644 index 000000000..09d384abd --- /dev/null +++ b/Settings/res/drawable-hdpi/ic_settings_home.png diff --git a/Settings/res/drawable-mdpi/ic_settings_home.png b/Settings/res/drawable-mdpi/ic_settings_home.png Binary files differnew file mode 100644 index 000000000..5965e314e --- /dev/null +++ b/Settings/res/drawable-mdpi/ic_settings_home.png diff --git a/Settings/res/drawable-xhdpi/ic_settings_home.png b/Settings/res/drawable-xhdpi/ic_settings_home.png Binary files differnew file mode 100644 index 000000000..693d81f7b --- /dev/null +++ b/Settings/res/drawable-xhdpi/ic_settings_home.png diff --git a/Settings/res/drawable-xxhdpi/ic_settings_home.png b/Settings/res/drawable-xxhdpi/ic_settings_home.png Binary files differnew file mode 100644 index 000000000..9c6d5c524 --- /dev/null +++ b/Settings/res/drawable-xxhdpi/ic_settings_home.png 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; + } } |