diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index d37f494..1b8e9c1 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -578,6 +578,22 @@ class _SettingsPageState extends State { }) ], ), + height16, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: Text( + tr('shizukuPretendToBeGooglePlay'))), + Switch( + value: settingsProvider + .shizukuPretendToBeGooglePlay, + onChanged: (value) { + settingsProvider + .shizukuPretendToBeGooglePlay = value; + }) + ], + ), height32, Text( tr('sourceSpecific'), diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index bea62d1..d0855c2 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -879,22 +879,20 @@ class AppsProvider with ChangeNotifier { apps[id]?.installedInfo == null ? context : null; bool needBGWorkaround = willBeSilent && context == null && !settingsProvider.useShizuku; + bool shizukuPretendToBeGooglePlay = settingsProvider + .shizukuPretendToBeGooglePlay || + apps[id]!.app.additionalSettings['shizukuPretendToBeGooglePlay'] == + true; if (downloadedFile != null) { if (needBGWorkaround) { // ignore: use_build_context_synchronously installApk(downloadedFile, contextIfNewInstall, needsBGWorkaround: true, - shizukuPretendToBeGooglePlay: apps[id]! - .app - .additionalSettings['shizukuPretendToBeGooglePlay'] == - true); + shizukuPretendToBeGooglePlay: shizukuPretendToBeGooglePlay); } else { // ignore: use_build_context_synchronously sayInstalled = await installApk(downloadedFile, contextIfNewInstall, - shizukuPretendToBeGooglePlay: apps[id]! - .app - .additionalSettings['shizukuPretendToBeGooglePlay'] == - true); + shizukuPretendToBeGooglePlay: shizukuPretendToBeGooglePlay); } } else { if (needBGWorkaround) { @@ -905,10 +903,7 @@ class AppsProvider with ChangeNotifier { // ignore: use_build_context_synchronously sayInstalled = await installXApkDir( downloadedDir!, contextIfNewInstall, - shizukuPretendToBeGooglePlay: apps[id]! - .app - .additionalSettings['shizukuPretendToBeGooglePlay'] == - true); + shizukuPretendToBeGooglePlay: shizukuPretendToBeGooglePlay); } } if (willBeSilent && context == null) { diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index f12dfbe..bef37b3 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -48,7 +48,7 @@ class SettingsProvider with ChangeNotifier { notifyListeners(); } - bool get useShizuku{ + bool get useShizuku { return prefs?.getBool('useShizuku') ?? false; } @@ -69,8 +69,7 @@ class SettingsProvider with ChangeNotifier { Color get themeColor { int? colorCode = prefs?.getInt('themeColor'); - return (colorCode != null) ? - Color(colorCode) : obtainiumThemeColor; + return (colorCode != null) ? Color(colorCode) : obtainiumThemeColor; } set themeColor(Color themeColor) { @@ -469,4 +468,13 @@ class SettingsProvider with ChangeNotifier { prefs?.setBool('beforeNewInstallsShareToAppVerifier', val); notifyListeners(); } + + bool get shizukuPretendToBeGooglePlay { + return prefs?.getBool('shizukuPretendToBeGooglePlay') ?? false; + } + + set shizukuPretendToBeGooglePlay(bool val) { + prefs?.setBool('shizukuPretendToBeGooglePlay', val); + notifyListeners(); + } }