Refactor AppPicker to adopt the latest UX

- get rid of ListActivity
- add aconfig

Bug: 299195099
Test: manual
Change-Id: I922ffb46f3132d117b0f682d8076f9e975d02b2c
This commit is contained in:
Edgar Wang
2023-11-09 20:37:44 +08:00
parent a930f5eaf8
commit 58bed09373
7 changed files with 237 additions and 7 deletions

View File

@@ -21,16 +21,20 @@ import static com.android.settings.development.DevelopmentOptionsActivityRequest
import android.Manifest;
import android.app.Activity;
import android.app.AppOpsManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
import java.util.List;
@@ -64,10 +68,26 @@ public class MockLocationAppPreferenceController extends DeveloperOptionsPrefere
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
return false;
}
final Intent intent = new Intent(mContext, AppPicker.class);
intent.putExtra(AppPicker.EXTRA_REQUESTIING_PERMISSION,
Manifest.permission.ACCESS_MOCK_LOCATION);
mFragment.startActivityForResult(intent, REQUEST_MOCK_LOCATION_APP);
if (Flags.deprecateListActivity()) {
final Bundle args = new Bundle();
args.putString(DevelopmentAppPicker.EXTRA_REQUESTING_PERMISSION,
Manifest.permission.ACCESS_MOCK_LOCATION);
final String debugApp = Settings.Global.getString(
mContext.getContentResolver(), Settings.Global.DEBUG_APP);
args.putString(DevelopmentAppPicker.EXTRA_SELECTING_APP, debugApp);
new SubSettingLauncher(mContext)
.setDestination(DevelopmentAppPicker.class.getName())
.setSourceMetricsCategory(SettingsEnums.DEVELOPMENT)
.setArguments(args)
.setTitleRes(com.android.settingslib.R.string.select_application)
.setResultListener(mFragment, REQUEST_MOCK_LOCATION_APP)
.launch();
} else {
final Intent intent = new Intent(mContext, AppPicker.class);
intent.putExtra(AppPicker.EXTRA_REQUESTIING_PERMISSION,
Manifest.permission.ACCESS_MOCK_LOCATION);
mFragment.startActivityForResult(intent, REQUEST_MOCK_LOCATION_APP);
}
return true;
}