diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java index 5f82f96541..61224887a9 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java @@ -75,6 +75,9 @@ import static android.view.View.VISIBLE; import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT; import static org.microg.gms.auth.AuthPrefs.isAuthVisible; +import static org.microg.gms.checkin.CheckinPrefs.hideLauncherIcon; +import static org.microg.gms.checkin.CheckinPrefs.isSpoofingEnabled; +import static org.microg.gms.checkin.CheckinPrefs.setSpoofingEnabled; import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME; import static org.microg.gms.common.Constants.GMS_VERSION_CODE; @@ -163,16 +166,17 @@ protected void onHuaweiButtonClicked() { state++; if (state == 1) { if (SDK_INT >= Build.VERSION_CODES.M) { - PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("pref_hide_launcher_icon", false).apply(); + hideLauncherIcon(this, false); UtilsKt.hideIcon(this, false); } - PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(HuaweiButtonPreference, true).apply(); - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(LoginButtonPreference, true)) { + if (!isSpoofingEnabled(this)) { LastCheckinInfo.clear(this); - CheckinClient.brandSpoof = true; - PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(LoginButtonPreference, true).apply(); + setSpoofingEnabled(this, true); } init(); + } else if (state == -1) { + setResult(RESULT_CANCELED); + finish(); } } @@ -181,11 +185,9 @@ protected void onNextButtonClicked() { super.onNextButtonClicked(); state++; if (state == 1) { - PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(LoginButtonPreference, true).apply(); - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(HuaweiButtonPreference, true)) { + if (isSpoofingEnabled(this)) { LastCheckinInfo.clear(this); - CheckinClient.brandSpoof = false; - PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(HuaweiButtonPreference, true).apply(); + setSpoofingEnabled(this, false); } init(); } else if (state == -1) { diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java index 5527ac48b7..2793663a4a 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java @@ -45,8 +45,7 @@ public class CheckinClient { private static final List TODO_LIST_STRING = new ArrayList<>(); // TODO private static final List TODO_LIST_CHECKIN = new ArrayList(); // TODO private static final String SERVICE_URL = "https://android.clients.google.com/checkin"; - public static boolean brandSpoof = false; - + public static CheckinResponse request(CheckinRequest request) throws IOException { HttpURLConnection connection = (HttpURLConnection) new URL(SERVICE_URL).openConnection(); connection.setRequestMethod("POST"); @@ -79,7 +78,7 @@ public static CheckinResponse request(CheckinRequest request) throws IOException public static CheckinRequest makeRequest(Build build, DeviceConfiguration deviceConfiguration, DeviceIdentifier deviceIdent, PhoneInfo phoneInfo, LastCheckinInfo checkinInfo, Locale locale, - List accounts) { + List accounts, Boolean brandSpoof) { CheckinRequest.Builder builder = new CheckinRequest.Builder() .accountCookie(new ArrayList<>()) .androidId(checkinInfo.getAndroidId()) diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java index 018d96559a..9bed5db080 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java @@ -32,6 +32,8 @@ import java.util.ArrayList; import java.util.List; +import static org.microg.gms.checkin.CheckinPrefs.isSpoofingEnabled; + public class CheckinManager { private static final String TAG = "GmsCheckinManager"; private static final long MIN_CHECKIN_INTERVAL = 3 * 60 * 60 * 1000; // 3 hours @@ -58,7 +60,8 @@ public static synchronized LastCheckinInfo checkin(Context context, boolean forc } CheckinRequest request = CheckinClient.makeRequest(Utils.getBuild(context), new DeviceConfiguration(context), Utils.getDeviceIdentifier(context), - Utils.getPhoneInfo(context), info, Utils.getLocale(context), accounts); + Utils.getPhoneInfo(context), info, Utils.getLocale(context), accounts, + isSpoofingEnabled(context)); return handleResponse(context, CheckinClient.request(request)); } diff --git a/play-services-core/src/main/kotlin/org/microg/gms/checkin/CheckinPrefs.kt b/play-services-core/src/main/kotlin/org/microg/gms/checkin/CheckinPrefs.kt index 5623765387..ece388d9ff 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/checkin/CheckinPrefs.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/checkin/CheckinPrefs.kt @@ -7,6 +7,7 @@ package org.microg.gms.checkin import android.content.Context import org.microg.mgms.settings.SettingsContract import org.microg.mgms.settings.SettingsContract.CheckIn +import org.microg.mgms.settings.SettingsContract.setSettings object CheckinPrefs { @@ -18,4 +19,26 @@ object CheckinPrefs { } } + @JvmStatic + fun isSpoofingEnabled(context: Context): Boolean { + val projection = arrayOf(CheckIn.BRAND_SPOOF) + return SettingsContract.getSettings(context, CheckIn.CONTENT_URI, projection) { c -> + c.getInt(0) != 0 + } + } + + @JvmStatic + fun setSpoofingEnabled(context: Context, enabled: Boolean) { + setSettings(context, CheckIn.CONTENT_URI) { + put(CheckIn.BRAND_SPOOF, enabled) + } + } + + @JvmStatic + fun hideLauncherIcon(context: Context, enabled: Boolean) { + setSettings(context, CheckIn.CONTENT_URI) { + put(CheckIn.HIDE_LAUNCHER_ICON, enabled) + } + } + } diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SettingsFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SettingsFragment.kt index 884bc1d781..92b0d0edfc 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SettingsFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/SettingsFragment.kt @@ -9,7 +9,6 @@ import android.content.ComponentName import android.content.pm.PackageManager import android.content.Intent import android.os.Bundle -import android.util.Log import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import androidx.preference.Preference @@ -23,6 +22,7 @@ import org.microg.gms.gcm.McsConstants.ACTION_RECONNECT import org.microg.gms.gcm.McsService import org.microg.gms.gcm.TriggerReceiver import org.microg.gms.gcm.getGcmServiceInfo +import org.microg.mgms.settings.SettingsContract import org.microg.tools.ui.ResourceSettingsFragment class SettingsFragment : ResourceSettingsFragment() { @@ -57,7 +57,7 @@ class SettingsFragment : ResourceSettingsFragment() { true } - findPreference(PREF_CAST_HIDE_LAUNCHER_ICON)?.apply { + findPreference(SettingsContract.CheckIn.HIDE_LAUNCHER_ICON)?.apply { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { setOnPreferenceChangeListener { _, newValue -> requireActivity().hideIcon(newValue as Boolean) @@ -101,8 +101,6 @@ class SettingsFragment : ResourceSettingsFragment() { const val PREF_GCM = "pref_gcm" const val PREF_CHECKIN = "pref_checkin" const val PREF_CAST_DOUBLE_FIX_ENABLED = "pref_cast_double_fix_enabled" - const val PREF_CAST_HIDE_LAUNCHER_ICON = "pref_hide_launcher_icon" - const val BRAND_SPOOF_FIX_ENABLED = "brand_spoof_fix_enabled" } init { diff --git a/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsContract.kt b/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsContract.kt index b736f569b7..aa200de446 100644 --- a/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsContract.kt +++ b/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsContract.kt @@ -23,6 +23,10 @@ object SettingsContract { const val VERSION_INFO = "versionInfo" const val DEVICE_DATA_VERSION_INFO = "deviceDataVersionInfo" + const val BRAND_SPOOF = "brandSpoof" + + const val HIDE_LAUNCHER_ICON = "hideLauncherIcon" + val PROJECTION = arrayOf( ENABLED, ANDROID_ID, @@ -31,6 +35,8 @@ object SettingsContract { SECURITY_TOKEN, VERSION_INFO, DEVICE_DATA_VERSION_INFO, + BRAND_SPOOF, + HIDE_LAUNCHER_ICON, ) const val PREFERENCES_NAME = "checkin" const val INITIAL_DIGEST = "1-929a0dca0eee55513280171a8585da7dcd3700f8" diff --git a/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsProvider.kt b/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsProvider.kt index caf5ada63a..d191fc6e1e 100644 --- a/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsProvider.kt +++ b/play-services-core/src/main/kotlin/org/microg/mgms/settings/SettingsProvider.kt @@ -85,6 +85,8 @@ class SettingsProvider : ContentProvider() { CheckIn.SECURITY_TOKEN -> checkInPrefs.getLong(key, 0) CheckIn.VERSION_INFO -> checkInPrefs.getString(key, "") ?: "" CheckIn.DEVICE_DATA_VERSION_INFO -> checkInPrefs.getString(key, "") ?: "" + CheckIn.BRAND_SPOOF -> getSettingsBoolean(key, false) + CheckIn.HIDE_LAUNCHER_ICON -> getSettingsBoolean(key, false) else -> throw IllegalArgumentException() } } @@ -104,6 +106,14 @@ class SettingsProvider : ContentProvider() { // special case: not saved in checkInPrefs updateCheckInEnabled(value as Boolean) } + if (key == CheckIn.BRAND_SPOOF) { + // special case: not saved in checkInPrefs + updateSpoofingEnabled(value as Boolean) + } + if (key == CheckIn.HIDE_LAUNCHER_ICON) { + // special case: not saved in checkInPrefs + updateHideLauncherIcon(value as Boolean) + } when (key) { CheckIn.ANDROID_ID -> editor.putLong(key, value as Long) CheckIn.DIGEST -> editor.putString(key, value as String?) @@ -122,6 +132,18 @@ class SettingsProvider : ContentProvider() { .apply() } + private fun updateSpoofingEnabled(enabled: Boolean) { + preferences.edit() + .putBoolean(CheckIn.BRAND_SPOOF, enabled) + .apply() + } + + private fun updateHideLauncherIcon(enabled: Boolean) { + preferences.edit() + .putBoolean(CheckIn.HIDE_LAUNCHER_ICON, enabled) + .apply() + } + private fun queryGcm(p: Array): Cursor = MatrixCursor(p).addRow(p) { key -> when (key) { Gcm.ENABLE_GCM -> getSettingsBoolean(key, true) diff --git a/play-services-core/src/main/res/values-cs/strings.xml b/play-services-core/src/main/res/values-cs/strings.xml index c5221edf8d..43a9ee9eff 100644 --- a/play-services-core/src/main/res/values-cs/strings.xml +++ b/play-services-core/src/main/res/values-cs/strings.xml @@ -102,7 +102,7 @@ Tato akce může trvat několik minut." O aplikaci Vanced microG Opravit duplicity ve Vysílání - Skrýt ikonu ze spouštěče + Skrýt ikonu ze spouštěče Huawei diff --git a/play-services-core/src/main/res/values-es/strings.xml b/play-services-core/src/main/res/values-es/strings.xml index 924113405b..cf50650eee 100644 --- a/play-services-core/src/main/res/values-es/strings.xml +++ b/play-services-core/src/main/res/values-es/strings.xml @@ -102,7 +102,7 @@ Esto puede tardar unos minutos." Acerca de Vanced microG Solucion para Cast duplicado - Ocultar microG del lanzador + Ocultar microG del lanzador Huawei diff --git a/play-services-core/src/main/res/values-in/strings.xml b/play-services-core/src/main/res/values-in/strings.xml index 6827eb66b4..d3163eb45b 100644 --- a/play-services-core/src/main/res/values-in/strings.xml +++ b/play-services-core/src/main/res/values-in/strings.xml @@ -102,7 +102,7 @@ Ini bisa berlangsung beberapa menit." Tentang Vanced microG Perbaikan Cast terduplikasi - Sembunyikan microG dari peluncur + Sembunyikan microG dari peluncur Registrasi perangkat Registrasi perangkat anda ke layanan Google dan buat pengenal perangkat unik. Vanced microG strips mengenal bits selain dari akun Google anda dari data registrasi. diff --git a/play-services-core/src/main/res/values-it/strings.xml b/play-services-core/src/main/res/values-it/strings.xml index adacbe3a6c..faaf7b72df 100755 --- a/play-services-core/src/main/res/values-it/strings.xml +++ b/play-services-core/src/main/res/values-it/strings.xml @@ -102,7 +102,7 @@ Questo potrà richiedere un paio di minuti" Informazioni su Vanced microG Correzione cast duplicato - Nascondi microG dal launcher + Nascondi microG dal launcher Registra dispositivo Registra il tuo dispositivo sui servizi Google e crea un identificatore univoco del dispositivo. Verranno rimossi dai Servizi Vanced microG alcuni bit utili per identificare i dati di registrazione, oltre al nome dell\'account Google. diff --git a/play-services-core/src/main/res/values-ru/strings.xml b/play-services-core/src/main/res/values-ru/strings.xml index f5a78cc0b5..93be73433c 100644 --- a/play-services-core/src/main/res/values-ru/strings.xml +++ b/play-services-core/src/main/res/values-ru/strings.xml @@ -102,7 +102,7 @@ О Vanced microG Исправление двух кнопок трансляции - скрыть микрог из лаунчера + скрыть микрог из лаунчера Huawei diff --git a/play-services-core/src/main/res/values/strings.xml b/play-services-core/src/main/res/values/strings.xml index 35dfabdbd7..030ec7bd80 100755 --- a/play-services-core/src/main/res/values/strings.xml +++ b/play-services-core/src/main/res/values/strings.xml @@ -102,7 +102,7 @@ This can take a couple of minutes." About Vanced microG Cast duplication fix - Hide icon from launcher + Hide icon from launcher Huawei diff --git a/play-services-core/src/main/res/xml/preferences_start.xml b/play-services-core/src/main/res/xml/preferences_start.xml index 7ea2cfa342..1e796d7bdf 100755 --- a/play-services-core/src/main/res/xml/preferences_start.xml +++ b/play-services-core/src/main/res/xml/preferences_start.xml @@ -49,8 +49,8 @@ android:summary="@string/pref_cast_double_fix_summary" android:defaultValue="false"/>