diff --git a/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java b/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java index 55c966b0..2d0fe0e6 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java @@ -1,10 +1,15 @@ package org.microg.gms.ui; +import android.content.ComponentName; +import android.content.pm.PackageManager; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.navigation.fragment.NavHostFragment; +import androidx.preference.Preference; +import androidx.preference.SwitchPreferenceCompat; +import com.google.android.gms.cast.media.CastMediaRouteProviderService; import com.mgoogle.android.gms.R; import org.microg.gms.checkin.CheckinPrefs; @@ -12,42 +17,68 @@ import org.microg.gms.gcm.GcmDatabase; import org.microg.gms.gcm.GcmPrefs; import org.microg.tools.ui.ResourceSettingsFragment; -public class SettingsFragment extends ResourceSettingsFragment { +public class SettingsFragment extends ResourceSettingsFragment +{ public static final String PREF_ABOUT = "pref_about"; public static final String PREF_GCM = "pref_gcm"; public static final String PREF_SNET = "pref_snet"; public static final String PREF_UNIFIEDNLP = "pref_unifiednlp"; public static final String PREF_CHECKIN = "pref_checkin"; + public static final String PREF_CAST_ENABLED = "pref_cast_enabled"; - public SettingsFragment() { + public SettingsFragment() + { preferencesResource = R.xml.preferences_start; } @Override - public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { + public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) + { super.onCreatePreferences(savedInstanceState, rootKey); updateDetails(); } @Override - public void onResume() { + public void onResume() + { super.onResume(); updateDetails(); } - private void updateDetails() { + private void updateDetails() + { findPreference(PREF_ABOUT).setSummary(getString(R.string.about_version_str, AboutFragment.getSelfVersion(getContext()))); findPreference(PREF_ABOUT).setOnPreferenceClickListener(preference -> { NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.openAbout); return true; }); - if (GcmPrefs.get(getContext()).isEnabled()) { + findPreference(PREF_CAST_ENABLED).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() + { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) + { + if ((boolean) newValue) + getContext().getPackageManager().setComponentEnabledSetting( + new ComponentName(getContext().getApplicationContext(), CastMediaRouteProviderService.class), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP); + else + getContext().getPackageManager().setComponentEnabledSetting( + new ComponentName(getContext().getApplicationContext(), CastMediaRouteProviderService.class), + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + return true; + } + }); + if (GcmPrefs.get(getContext()).isEnabled()) + { GcmDatabase database = new GcmDatabase(getContext()); int regCount = database.getRegistrationList().size(); database.close(); findPreference(PREF_GCM).setSummary(getString(R.string.service_status_enabled_short) + " - " + getResources().getQuantityString(R.plurals.gcm_registered_apps_counter, regCount, regCount)); - } else { + } else + { findPreference(PREF_GCM).setSummary(R.string.service_status_disabled_short); } findPreference(PREF_GCM).setOnPreferenceClickListener(preference -> { diff --git a/play-services-core/src/main/res/drawable/ic_cast_black.xml b/play-services-core/src/main/res/drawable/ic_cast_black.xml new file mode 100644 index 00000000..001d433f --- /dev/null +++ b/play-services-core/src/main/res/drawable/ic_cast_black.xml @@ -0,0 +1,10 @@ + + + diff --git a/play-services-core/src/main/res/values/strings.xml b/play-services-core/src/main/res/values/strings.xml index 98fbb870..4db49d56 100755 --- a/play-services-core/src/main/res/values/strings.xml +++ b/play-services-core/src/main/res/values/strings.xml @@ -106,6 +106,7 @@ This can take a couple of minutes." Ask before registering a new app to receive push notifications About Vanced microG + Cast service Registers your device to Google services and creates a unique device identifier. Vanced microG strips identifying bits other than your Google account name from registration data. Status 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 9501282c..691022b0 100755 --- a/play-services-core/src/main/res/xml/preferences_start.xml +++ b/play-services-core/src/main/res/xml/preferences_start.xml @@ -42,6 +42,11 @@ android:targetClass="org.microg.gms.ui.GoogleMoreFragment$AsActivity" android:targetPackage="com.mgoogle.android.gms" /> +