From 738dd5649f976e2eea556473b10c1e8b27c80ae7 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Tue, 1 Oct 2024 17:07:11 -0400 Subject: [PATCH] App-wide "pretend to be GPlay" option (#1859) --- lib/pages/settings.dart | 16 ++++++++++++++++ lib/providers/apps_provider.dart | 19 +++++++------------ lib/providers/settings_provider.dart | 14 +++++++++++--- 3 files changed, 34 insertions(+), 15 deletions(-) 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(); + } }