Merge "Default apps setting for managed profile"

This commit is contained in:
Tony Mak
2016-01-27 17:17:44 +00:00
committed by Android (Google) Code Review
8 changed files with 146 additions and 67 deletions

View File

@@ -24,6 +24,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.AsyncTask;
import android.os.UserManager;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -31,6 +32,7 @@ import android.util.ArraySet;
import android.util.AttributeSet;
import com.android.settings.AppListPreference;
import com.android.settings.Utils;
import java.util.List;
import java.util.Objects;
@@ -135,7 +137,8 @@ public class DefaultEmergencyPreference extends AppListPreference {
public static boolean isAvailable(Context context) {
return isCapable(context)
&& context.getPackageManager().resolveActivity(QUERY_INTENT, 0) != null;
&& context.getPackageManager().resolveActivity(QUERY_INTENT, 0) != null
&& !Utils.isManagedProfile(UserManager.get(context)) ;
}
public static boolean isCapable(Context context) {

View File

@@ -25,6 +25,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.os.UserManager;
import android.provider.Settings;
import android.service.notification.NotificationAssistantService;
import android.util.AttributeSet;
@@ -34,6 +35,7 @@ import java.util.ArrayList;
import java.util.List;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.notification.ManagedServiceSettings;
public class DefaultNotificationAssistantPreference extends AppListPreference {
@@ -108,4 +110,8 @@ public class DefaultNotificationAssistantPreference extends AppListPreference {
c.emptyText = R.string.no_notification_listeners;
return c;
}
public static boolean isAvailable(Context context) {
return !Utils.isManagedProfile(UserManager.get(context));
}
}

View File

@@ -17,6 +17,7 @@ package com.android.settings.applications;
import android.content.ComponentName;
import android.content.Context;
import android.os.UserManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -24,6 +25,7 @@ import android.util.AttributeSet;
import com.android.internal.telephony.SmsApplication;
import com.android.internal.telephony.SmsApplication.SmsApplicationData;
import com.android.settings.AppListPreference;
import com.android.settings.Utils;
import java.util.Collection;
import java.util.Objects;
@@ -69,7 +71,7 @@ public class DefaultSmsPreference extends AppListPreference {
public static boolean isAvailable(Context context) {
TelephonyManager tm =
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return tm.isSmsCapable();
return tm.isSmsCapable() && !Utils.isManagedProfile(UserManager.get(context));
}
}

View File

@@ -18,9 +18,11 @@ package com.android.settings.applications;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.UserManager;
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
@@ -28,6 +30,7 @@ import android.support.v7.preference.Preference;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.voice.VoiceInputListPreference;
/**
@@ -175,4 +178,8 @@ public class ManageAssist extends SettingsPreferenceFragment
mDefaultAssitPref.setValue(assistPackage);
updateUi();
}
public static boolean isAvailable(Context context) {
return !Utils.isManagedProfile(UserManager.get(context));
}
}

View File

@@ -26,6 +26,7 @@ import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.util.Log;
@@ -33,29 +34,32 @@ import android.util.Log;
import com.android.internal.content.PackageMonitor;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Index;
import com.android.settings.search.Indexable;
import com.android.settings.utils.ProfileSettingsPreferenceFragment;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ManageDefaultApps extends SettingsPreferenceFragment
public class ManageDefaultApps extends ProfileSettingsPreferenceFragment
implements Preference.OnPreferenceClickListener, Indexable {
private static final String TAG = ManageDefaultApps.class.getSimpleName();
private static final String KEY_ASSIST_AND_VOICE_INPUT = "assist_and_voice_input";
private static final String KEY_DEFAULT_BROWSER = "default_browser";
private static final String KEY_DEFAULT_PHONE_APP = "default_phone_app";
private static final String KEY_DEFAULT_EMERGENCY_APP = "default_emergency_app";
private static final String KEY_SMS_APPLICATION = "default_sms_app";
private static final String KEY_DEFAULT_NOTIFICATION_ASST = "default_notification_asst_app";
private DefaultBrowserPreference mDefaultBrowserPreference;
private PackageManager mPm;
private int myUserId;
private static final long DELAY_UPDATE_BROWSER_MILLIS = 500;
private final Handler mHandler = new Handler();
@@ -130,6 +134,7 @@ public class ManageDefaultApps extends SettingsPreferenceFragment
mPm = getPackageManager();
myUserId = UserHandle.myUserId();
mDefaultBrowserPreference = (DefaultBrowserPreference) findPreference(KEY_DEFAULT_BROWSER);
mDefaultBrowserPreference.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@@ -151,7 +156,7 @@ public class ManageDefaultApps extends SettingsPreferenceFragment
}
return result;
}
});
});
final boolean isRestrictedUser = UserManager.get(getActivity())
.getUserInfo(myUserId).isRestricted();
@@ -169,6 +174,14 @@ public class ManageDefaultApps extends SettingsPreferenceFragment
removePreference(KEY_DEFAULT_EMERGENCY_APP);
}
if (!ManageAssist.isAvailable(getActivity())) {
removePreference(KEY_ASSIST_AND_VOICE_INPUT);
}
if (!DefaultNotificationAssistantPreference.isAvailable(getActivity())) {
removePreference(KEY_DEFAULT_NOTIFICATION_ASST);
}
if (DefaultEmergencyPreference.isCapable(getActivity())) {
Index.getInstance(getActivity()).updateFromClassNameResource(
ManageDefaultApps.class.getName(), true, true);
@@ -200,31 +213,36 @@ public class ManageDefaultApps extends SettingsPreferenceFragment
}
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.default_apps;
return Arrays.asList(sir);
}
@Override
public List<String> getNonIndexableKeys(Context context) {
final ArrayList<String> result = new ArrayList<String>();
// Remove SMS Application if the device does not support SMS
final boolean isRestrictedUser = UserManager.get(context)
.getUserInfo(UserHandle.myUserId()).isRestricted();
if (!DefaultSmsPreference.isAvailable(context) || isRestrictedUser) {
result.add(KEY_SMS_APPLICATION);
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.default_apps;
return Arrays.asList(sir);
}
if (!DefaultEmergencyPreference.isAvailable(context)) {
result.add(KEY_DEFAULT_EMERGENCY_APP);
}
@Override
public List<String> getNonIndexableKeys(Context context) {
final ArrayList<String> result = new ArrayList<String>();
// Remove SMS Application if the device does not support SMS
final boolean isRestrictedUser = UserManager.get(context)
.getUserInfo(UserHandle.myUserId()).isRestricted();
if (!DefaultSmsPreference.isAvailable(context) || isRestrictedUser) {
result.add(KEY_SMS_APPLICATION);
}
if (!DefaultEmergencyPreference.isAvailable(context)) {
result.add(KEY_DEFAULT_EMERGENCY_APP);
}
return result;
}
};
protected String getIntentActionString() {
return Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS;
}
return result;
}
};
}