Make Mainline Module update intent explicit

Change-Id: Iaacbebcb5328d50f0bdaa554782144315140e143
Test: Existing unit test
Test: on-device verified tapping UI element still navigates to Play's update screen (About phone > Android version > Google Play system update)
Bug: 278987474
This commit is contained in:
Chris Antol
2023-11-15 01:18:19 +00:00
parent 30e841ce75
commit 54f6b164fa
4 changed files with 51 additions and 11 deletions

View File

@@ -28,6 +28,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.flags.Flags;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -43,14 +44,15 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon
private static final String TAG = "MainlineModuleControl";
private static final List<String> VERSION_NAME_DATE_PATTERNS = Arrays.asList("yyyy-MM-dd",
"yyyy-MM");
@VisibleForTesting
static final Intent MODULE_UPDATE_INTENT =
new Intent("android.settings.MODULE_UPDATE_SETTINGS");
static final String MODULE_UPDATE_INTENT_ACTION =
"android.settings.MODULE_UPDATE_SETTINGS";
@VisibleForTesting
static final Intent MODULE_UPDATE_V2_INTENT =
new Intent("android.settings.MODULE_UPDATE_VERSIONS");
static final String MODULE_UPDATE_V2_INTENT_ACTION =
"android.settings.MODULE_UPDATE_VERSIONS";
private final Intent mModuleUpdateIntent;
private final Intent mModuleUpdateV2Intent;
private final PackageManager mPackageManager;
private String mModuleVersion;
@@ -58,6 +60,14 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon
public MainlineModuleVersionPreferenceController(Context context, String key) {
super(context, key);
mPackageManager = mContext.getPackageManager();
mModuleUpdateIntent = new Intent(MODULE_UPDATE_INTENT_ACTION);
mModuleUpdateV2Intent = new Intent(MODULE_UPDATE_V2_INTENT_ACTION);
if (Flags.mainlineModuleExplicitIntent()) {
String packageName = mContext
.getString(com.android.settings.R.string.config_mainline_module_update_package);
mModuleUpdateIntent.setPackage(packageName);
mModuleUpdateV2Intent.setPackage(packageName);
}
initModules();
}
@@ -86,17 +96,17 @@ public class MainlineModuleVersionPreferenceController extends BasePreferenceCon
super.updateState(preference);
final ResolveInfo resolvedV2 =
mPackageManager.resolveActivity(MODULE_UPDATE_V2_INTENT, 0 /* flags */);
mPackageManager.resolveActivity(mModuleUpdateV2Intent, 0 /* flags */);
if (resolvedV2 != null) {
preference.setIntent(MODULE_UPDATE_V2_INTENT);
preference.setIntent(mModuleUpdateV2Intent);
preference.setSelectable(true);
return;
}
final ResolveInfo resolved =
mPackageManager.resolveActivity(MODULE_UPDATE_INTENT, 0 /* flags */);
mPackageManager.resolveActivity(mModuleUpdateIntent, 0 /* flags */);
if (resolved != null) {
preference.setIntent(MODULE_UPDATE_INTENT);
preference.setIntent(mModuleUpdateIntent);
preference.setSelectable(true);
} else {
Log.d(TAG, "The ResolveInfo of the update intent is null.");