Settings: Better check for GSA package

This fixes lens & CTS for vanilla users with full GSA installed.
While not enabling it for users who only have the stub.
Check if the activity exists to achieve that.

Same as we do in L3, see: cd4c6afd5b

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This commit is contained in:
Ido Ben-Hur
2024-12-30 19:46:06 +02:00
committed by Joey
parent d1797ce890
commit 043f9a0bf6
2 changed files with 23 additions and 14 deletions

View File

@@ -17,7 +17,6 @@
package com.android.settings.gestures; package com.android.settings.gestures;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.provider.Settings; import android.provider.Settings;
@@ -52,13 +51,15 @@ public class GestureNavigationCtsController extends TogglePreferenceController {
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (!GestureNavigationLongPressController.isAvailable(mContext)) {
return UNSUPPORTED_ON_DEVICE;
}
PackageManager pm = mContext.getPackageManager(); PackageManager pm = mContext.getPackageManager();
if (pm == null) { if (pm == null) {
return UNSUPPORTED_ON_DEVICE; return UNSUPPORTED_ON_DEVICE;
} }
try { try {
ApplicationInfo ai = pm.getApplicationInfo(mCtsPackage, 0); if (pm.getApplicationInfo(mCtsPackage, 0).enabled) {
if (ai.enabled && ai.isProduct()) {
return AVAILABLE; return AVAILABLE;
} }
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {

View File

@@ -16,8 +16,9 @@
package com.android.settings.gestures; package com.android.settings.gestures;
import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.provider.Settings; import android.provider.Settings;
@@ -30,6 +31,7 @@ import com.android.settings.core.TogglePreferenceController;
public class GestureNavigationLongPressController extends TogglePreferenceController { public class GestureNavigationLongPressController extends TogglePreferenceController {
private static final String GSA_PACKAGE = "com.google.android.googlequicksearchbox"; private static final String GSA_PACKAGE = "com.google.android.googlequicksearchbox";
private static final String LENS_SHARE_ACTIVITY = "com.google.android.apps.search.lens.LensShareEntryPointActivity";
private static final String LONGPRESS_KEY = "search_all_entrypoints_enabled"; private static final String LONGPRESS_KEY = "search_all_entrypoints_enabled";
private Preference mLongPressPref; private Preference mLongPressPref;
@@ -43,7 +45,7 @@ public class GestureNavigationLongPressController extends TogglePreferenceContro
super.displayPreference(screen); super.displayPreference(screen);
mLongPressPref = (Preference) screen.findPreference(LONGPRESS_KEY); mLongPressPref = (Preference) screen.findPreference(LONGPRESS_KEY);
mLongPressPref.setEnabled(isChecked()); mLongPressPref.setEnabled(isChecked());
} }
@Override @Override
@@ -60,21 +62,27 @@ public class GestureNavigationLongPressController extends TogglePreferenceContro
Settings.System.NAVBAR_LONG_PRESS_GESTURE, isChecked ? 1 : 0); Settings.System.NAVBAR_LONG_PRESS_GESTURE, isChecked ? 1 : 0);
} }
@Override public static boolean isAvailable(Context context) {
public int getAvailabilityStatus() { PackageManager pm = context.getPackageManager();
PackageManager pm = mContext.getPackageManager();
if (pm == null) { if (pm == null) {
return UNSUPPORTED_ON_DEVICE; return false;
} }
try { try {
ApplicationInfo ai = pm.getApplicationInfo(GSA_PACKAGE, 0); if (!pm.getApplicationInfo(GSA_PACKAGE, 0).enabled) {
if (ai.enabled && ai.isProduct()) { return false;
return AVAILABLE;
} }
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
return UNSUPPORTED_ON_DEVICE; return false;
} }
return UNSUPPORTED_ON_DEVICE; // telling real GSA apart from the google stub
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setComponent(new ComponentName(GSA_PACKAGE, LENS_SHARE_ACTIVITY));
return pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size() > 0;
}
@Override
public int getAvailabilityStatus() {
return isAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override @Override