Loading res/values/strings.xml +10 −0 Original line number Diff line number Diff line Loading @@ -5651,6 +5651,7 @@ <string name="keywords_emergency_app">emergency ice app default</string> <string name="keywords_all_apps">apps download applications system</string> <string name="keywords_app_permissions">apps permissions security</string> <string name="keywords_default_apps">apps default</string> <!-- Search keywords for different screen unlock modes : slide to unlock, password, pattern and PIN [CHAR LIMIT=none] --> <string name="keywords_lockscreen">slide password pattern pin</string> Loading Loading @@ -6186,4 +6187,13 @@ <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> apps can open their domain URLs</item> </plurals> <!-- Title for Default Apps settings [CHAR LIMIT=30] --> <string name="default_apps_title">Default Apps</string> <!-- Title for Default Browser settings [CHAR LIMIT=30] --> <string name="default_browser_title">Default Browser</string> <!-- Summary for No Default Browser settings [CHAR LIMIT=45] --> <string name="default_browser_title_none">No default Browser</string> </resources> res/xml/advanced_apps.xml +6 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,12 @@ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:key="applications_settings"> <PreferenceScreen android:key="default_apps" android:fragment="com.android.settings.applications.ManageDefaultApps" android:title="@string/default_apps_title" settings:keywords="@string/keywords_default_apps" /> <PreferenceScreen android:key="manage_perms" android:fragment="com.android.settings.applications.ManagePermissions" Loading res/xml/default_apps.xml 0 → 100644 +28 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:key="default_apps"> <com.android.settings.applications.DefaultBrowserPreference android:key="default_browser" android:title="@string/default_browser_title" android:summary="@string/default_browser_title_none" /> </PreferenceScreen> src/com/android/settings/InstrumentedFragment.java +3 −1 Original line number Diff line number Diff line Loading @@ -23,9 +23,11 @@ import com.android.internal.logging.MetricsLogger; * Instrumented fragment that logs visibility state. */ public abstract class InstrumentedFragment extends PreferenceFragment { // Declare new temproary categories here, starting after this value. // Declare new temporary categories here, starting after this value. public static final int VIEW_CATEGORY_UNDECLARED = 100000; public static final int VIEW_CATEGORY_DEFAULT_APPS = VIEW_CATEGORY_UNDECLARED + 1; /** * Declare the view of this category. * Loading src/com/android/settings/applications/DefaultBrowserPreference.java 0 → 100644 +81 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.UserHandle; import android.preference.ListPreference; import android.util.ArrayMap; import android.util.AttributeSet; import com.android.settings.R; import java.util.List; public class DefaultBrowserPreference extends ListPreference { final private PackageManager mPm; public DefaultBrowserPreference(Context context, AttributeSet attrs) { super(context, attrs); mPm = context.getPackageManager(); loadBrowserApps(); } private void loadBrowserApps() { ArrayMap<String, CharSequence> browsers = resolveBrowserApps(); setEntries(browsers.values().toArray(new CharSequence[browsers.size()])); setEntryValues(browsers.keySet().toArray(new String[browsers.size()])); } private ArrayMap<String, CharSequence> resolveBrowserApps() { ArrayMap<String, CharSequence> result = new ArrayMap<>(); // Create an Intent that will match ALL Browser Apps Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http:")); // Resolve that intent and check that the handleAllWebDataURI boolean is set PackageManager packageManager = getContext().getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivitiesAsUser(intent, 0, UserHandle.myUserId()); final int count = list.size(); for (int i=0; i<count; i++) { ResolveInfo info = list.get(i); if (info.activityInfo == null || result.containsKey(info.activityInfo.packageName) || !info.handleAllWebDataURI) { continue; } String packageName = info.activityInfo.packageName; CharSequence label = info.activityInfo.applicationInfo.loadLabel(packageManager); result.put(packageName, label); } return result; } } Loading
res/values/strings.xml +10 −0 Original line number Diff line number Diff line Loading @@ -5651,6 +5651,7 @@ <string name="keywords_emergency_app">emergency ice app default</string> <string name="keywords_all_apps">apps download applications system</string> <string name="keywords_app_permissions">apps permissions security</string> <string name="keywords_default_apps">apps default</string> <!-- Search keywords for different screen unlock modes : slide to unlock, password, pattern and PIN [CHAR LIMIT=none] --> <string name="keywords_lockscreen">slide password pattern pin</string> Loading Loading @@ -6186,4 +6187,13 @@ <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> apps can open their domain URLs</item> </plurals> <!-- Title for Default Apps settings [CHAR LIMIT=30] --> <string name="default_apps_title">Default Apps</string> <!-- Title for Default Browser settings [CHAR LIMIT=30] --> <string name="default_browser_title">Default Browser</string> <!-- Summary for No Default Browser settings [CHAR LIMIT=45] --> <string name="default_browser_title_none">No default Browser</string> </resources>
res/xml/advanced_apps.xml +6 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,12 @@ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:key="applications_settings"> <PreferenceScreen android:key="default_apps" android:fragment="com.android.settings.applications.ManageDefaultApps" android:title="@string/default_apps_title" settings:keywords="@string/keywords_default_apps" /> <PreferenceScreen android:key="manage_perms" android:fragment="com.android.settings.applications.ManagePermissions" Loading
res/xml/default_apps.xml 0 → 100644 +28 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:key="default_apps"> <com.android.settings.applications.DefaultBrowserPreference android:key="default_browser" android:title="@string/default_browser_title" android:summary="@string/default_browser_title_none" /> </PreferenceScreen>
src/com/android/settings/InstrumentedFragment.java +3 −1 Original line number Diff line number Diff line Loading @@ -23,9 +23,11 @@ import com.android.internal.logging.MetricsLogger; * Instrumented fragment that logs visibility state. */ public abstract class InstrumentedFragment extends PreferenceFragment { // Declare new temproary categories here, starting after this value. // Declare new temporary categories here, starting after this value. public static final int VIEW_CATEGORY_UNDECLARED = 100000; public static final int VIEW_CATEGORY_DEFAULT_APPS = VIEW_CATEGORY_UNDECLARED + 1; /** * Declare the view of this category. * Loading
src/com/android/settings/applications/DefaultBrowserPreference.java 0 → 100644 +81 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.UserHandle; import android.preference.ListPreference; import android.util.ArrayMap; import android.util.AttributeSet; import com.android.settings.R; import java.util.List; public class DefaultBrowserPreference extends ListPreference { final private PackageManager mPm; public DefaultBrowserPreference(Context context, AttributeSet attrs) { super(context, attrs); mPm = context.getPackageManager(); loadBrowserApps(); } private void loadBrowserApps() { ArrayMap<String, CharSequence> browsers = resolveBrowserApps(); setEntries(browsers.values().toArray(new CharSequence[browsers.size()])); setEntryValues(browsers.keySet().toArray(new String[browsers.size()])); } private ArrayMap<String, CharSequence> resolveBrowserApps() { ArrayMap<String, CharSequence> result = new ArrayMap<>(); // Create an Intent that will match ALL Browser Apps Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse("http:")); // Resolve that intent and check that the handleAllWebDataURI boolean is set PackageManager packageManager = getContext().getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivitiesAsUser(intent, 0, UserHandle.myUserId()); final int count = list.size(); for (int i=0; i<count; i++) { ResolveInfo info = list.get(i); if (info.activityInfo == null || result.containsKey(info.activityInfo.packageName) || !info.handleAllWebDataURI) { continue; } String packageName = info.activityInfo.packageName; CharSequence label = info.activityInfo.applicationInfo.loadLabel(packageManager); result.put(packageName, label); } return result; } }