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" />
+