Migrate emegency default app to role manager.

Bug: 123293861
Test: atest DefaultEmergencyPickerTest
Change-Id: I7bd9e2655b22a35fc3268091d38c6770911d4046
This commit is contained in:
Hongming Jin
2019-01-23 11:56:18 -08:00
parent 8febd82f34
commit 6c728dc924
3 changed files with 57 additions and 21 deletions

View File

@@ -16,6 +16,8 @@
package com.android.settings.applications.defaultapps;
import android.app.role.RoleManager;
import android.app.role.RoleManagerCallback;
import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.Context;
@@ -23,9 +25,13 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.AsyncTask;
import android.os.Process;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import com.android.internal.util.CollectionUtils;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.applications.DefaultAppInfo;
@@ -35,7 +41,7 @@ import java.util.ArrayList;
import java.util.List;
public class DefaultEmergencyPicker extends DefaultAppPickerFragment {
private static final String TAG = "DefaultEmergencyPicker";
@Override
public int getMetricsCategory() {
return SettingsEnums.DEFAULT_EMERGENCY_APP_PICKER;
@@ -85,20 +91,27 @@ public class DefaultEmergencyPicker extends DefaultAppPickerFragment {
@Override
protected String getDefaultKey() {
return Settings.Secure.getString(getContext().getContentResolver(),
Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
RoleManager roleManager = getContext().getSystemService(RoleManager.class);
return CollectionUtils.firstOrNull(roleManager.getRoleHolders(RoleManager.ROLE_EMERGENCY));
}
@Override
protected boolean setDefaultKey(String key) {
final ContentResolver contentResolver = getContext().getContentResolver();
final String previousValue = Settings.Secure.getString(contentResolver,
Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION);
final String previousValue = getDefaultKey();
if (!TextUtils.isEmpty(key) && !TextUtils.equals(key, previousValue)) {
Settings.Secure.putString(contentResolver,
Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION,
key);
getContext().getSystemService(RoleManager.class)
.addRoleHolderAsUser(
RoleManager.ROLE_EMERGENCY, key, 0, Process.myUserHandle(),
AsyncTask.THREAD_POOL_EXECUTOR, new RoleManagerCallback() {
@Override
public void onSuccess() {}
@Override
public void onFailure() {
Log.e(TAG, "Failed to set emergency default app.");
}
});
return true;
}
return false;