Merge "Improved UX when no debuggable apps are available." into rvc-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1b65359..ddcf22c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -11322,6 +11322,10 @@
<string name="platform_compat_default_disabled_title">Default disabled changes</string>
<!-- Title for target SDK gated app compat changes category (do not translate 'targetSdkVersion') [CHAR LIMIT=50] -->
<string name="platform_compat_target_sdk_title">Enabled for targetSdkVersion > <xliff:g id="number" example="29">%d</xliff:g></string>
+ <!-- Title for the dialog shown when no debuggable apps are available [CHAR LIMIT=20] -->
+ <string name="platform_compat_dialog_title_no_apps">No apps available</string>
+ <!-- Explanatory text shown when no debuggable apps are available [CHAR LIMIT=NONE] -->
+ <string name="platform_compat_dialog_text_no_apps">App compatibility changes can only be modified for debuggable apps. Install a debuggable app and try again.</string>
<!-- Slices Strings -->
diff --git a/src/com/android/settings/development/AppPicker.java b/src/com/android/settings/development/AppPicker.java
index 8e927db..51215a1 100644
--- a/src/com/android/settings/development/AppPicker.java
+++ b/src/com/android/settings/development/AppPicker.java
@@ -47,10 +47,14 @@
= "com.android.settings.extra.REQUESTIING_PERMISSION";
public static final String EXTRA_DEBUGGABLE = "com.android.settings.extra.DEBUGGABLE";
public static final String EXTRA_NON_SYSTEM = "com.android.settings.extra.NON_SYSTEM";
+ public static final String EXTRA_INCLUDE_NOTHING = "com.android.settings.extra.INCLUDE_NOTHING";
+
+ public static final int RESULT_NO_MATCHING_APPS = -2;
private String mPermissionName;
private boolean mDebuggableOnly;
private boolean mNonSystemOnly;
+ private boolean mIncludeNothing;
@Override
protected void onCreate(Bundle icicle) {
@@ -60,9 +64,11 @@
mPermissionName = getIntent().getStringExtra(EXTRA_REQUESTIING_PERMISSION);
mDebuggableOnly = getIntent().getBooleanExtra(EXTRA_DEBUGGABLE, false);
mNonSystemOnly = getIntent().getBooleanExtra(EXTRA_NON_SYSTEM, false);
+ mIncludeNothing = getIntent().getBooleanExtra(EXTRA_INCLUDE_NOTHING, true);
mAdapter = new AppListAdapter(this);
if (mAdapter.getCount() <= 0) {
+ setResult(RESULT_NO_MATCHING_APPS);
finish();
} else {
setListAdapter(mAdapter);
@@ -160,9 +166,11 @@
mPackageInfoList.add(info);
}
Collections.sort(mPackageInfoList, sDisplayNameComparator);
- MyApplicationInfo info = new MyApplicationInfo();
- info.label = context.getText(R.string.no_application);
- mPackageInfoList.add(0, info);
+ if (mIncludeNothing) {
+ MyApplicationInfo info = new MyApplicationInfo();
+ info.label = context.getText(R.string.no_application);
+ mPackageInfoList.add(0, info);
+ }
addAll(mPackageInfoList);
}
diff --git a/src/com/android/settings/development/compat/PlatformCompatDashboard.java b/src/com/android/settings/development/compat/PlatformCompatDashboard.java
index 2f2c750..fe64948 100644
--- a/src/com/android/settings/development/compat/PlatformCompatDashboard.java
+++ b/src/com/android/settings/development/compat/PlatformCompatDashboard.java
@@ -20,6 +20,7 @@
import static com.android.settings.development.DevelopmentOptionsActivityRequestCodes.REQUEST_COMPAT_CHANGE_APP;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.settings.SettingsEnums;
import android.compat.Compatibility.ChangeConfig;
import android.content.Context;
@@ -124,6 +125,14 @@
} catch (PackageManager.NameNotFoundException e) {
startAppPicker();
}
+ } else if (resultCode == AppPicker.RESULT_NO_MATCHING_APPS) {
+ new AlertDialog.Builder(getContext())
+ .setTitle(R.string.platform_compat_dialog_title_no_apps)
+ .setMessage(R.string.platform_compat_dialog_text_no_apps)
+ .setPositiveButton(R.string.okay, (dialog, which) -> finish())
+ .setOnDismissListener(dialog -> finish())
+ .setCancelable(false)
+ .show();
}
return;
}
@@ -254,7 +263,8 @@
}
private void startAppPicker() {
- final Intent intent = new Intent(getContext(), AppPicker.class);
+ final Intent intent = new Intent(getContext(), AppPicker.class)
+ .putExtra(AppPicker.EXTRA_INCLUDE_NOTHING, false);
// If build is neither userdebug nor eng, only include debuggable apps
final boolean debuggableBuild = mAndroidBuildClassifier.isDebuggableBuild();
if (!debuggableBuild) {