diff --git a/app/src/main/java/ru/vtosters/hooks/MainActivityInjector.java b/app/src/main/java/ru/vtosters/hooks/MainActivityInjector.java
index 54a9026c5..e5b0468ed 100644
--- a/app/src/main/java/ru/vtosters/hooks/MainActivityInjector.java
+++ b/app/src/main/java/ru/vtosters/hooks/MainActivityInjector.java
@@ -14,7 +14,6 @@ import ru.vtosters.lite.concurrent.VTExecutors;
import ru.vtosters.lite.downloaders.notifications.NotificationChannels;
import ru.vtosters.lite.ssfs.UsersList;
import ru.vtosters.lite.themes.ThemesManager;
-import ru.vtosters.lite.ui.dialogs.DisableBattery;
import ru.vtosters.lite.ui.dialogs.InstallGMS;
import ru.vtosters.lite.ui.dialogs.OTADialog;
import ru.vtosters.lite.ui.dialogs.Start;
@@ -64,7 +63,6 @@ public class MainActivityInjector {
Start.alert(activity);
InstallGMS.alert(activity);
- DisableBattery.alert(activity);
// VKIDProtection.alert(activity);
//needs to show selected tgs pack count in settings after cold launch
TelegramStickersService.getInstance(activity);
diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java
deleted file mode 100644
index 9974ae28a..000000000
--- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package ru.vtosters.lite.ui.dialogs;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Build;
-import android.os.PowerManager;
-import android.provider.Settings;
-import com.vk.core.dialogs.alert.VkAlertDialog;
-import com.vtosters.lite.R;
-import ru.vtosters.hooks.other.Preferences;
-import ru.vtosters.lite.deviceinfo.OEMDetector;
-
-public class DisableBattery {
- public static void alert(Activity activity) {
- if (!(OEMDetector.isOEM() && Build.VERSION.SDK_INT >= 23 && Preferences.getBoolValue("showDoze", true)))
- return;
- String packName = activity.getPackageName();
- PowerManager manager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
- if (manager.isIgnoringBatteryOptimizations(packName)) return;
- new VkAlertDialog.Builder(activity)
- .setTitle(R.string.batteryissuetitle)
- .setMessage(R.string.batteryissuesumm)
- .setCancelable(false)
- .setPositiveButton(R.string.batteryissuebtn1, (dialogInterface, i) -> {
- @SuppressLint("BatteryLife")
- var intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
- .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .setData(Uri.parse("package:" + packName));
- activity.startActivity(intent);
- })
- .setNeutralButton(R.string.batteryissuebtn2,
- (dialogInterface, i) -> Preferences.getPreferences().edit().putBoolean("showDoze", false).apply()
- )
- .show();
- }
-}
diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java
index 468af442e..a2a4b9f2d 100644
--- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java
+++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java
@@ -1,6 +1,9 @@
package ru.vtosters.lite.ui.fragments;
+import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
+import com.vk.core.dialogs.alert.VkAlertDialog;
import com.vtosters.lite.R;
public class InstallGMSFragment extends TrackedMaterialPreferenceToolbarFragment {
@@ -8,6 +11,22 @@ public class InstallGMSFragment extends TrackedMaterialPreferenceToolbarFragment
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
addPreferencesFromResource(R.xml.preferences_gms);
+
+ findPreference("microg").setOnPreferenceClickListener((preference) -> {
+ String[] items = {"Уменьшенный MicroG (Vanced MicroG)", "Полноценный MicroG (Замена GMS)"};
+
+ new VkAlertDialog.Builder(requireActivity()).setItems(items, (dialog, which) -> {
+ switch (which) {
+ case 0 ->
+ requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://github.com/TeamVanced/VancedMicroG/releases/latest/download/microg.apk")));
+ case 1 ->
+ requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://github.com/microg/GmsCore/releases")));
+ }
+ dismiss();
+ }).show();;
+
+ return true;
+ });
}
@Override
diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java
index 02f7932ef..625e43d9a 100644
--- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java
+++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java
@@ -6,6 +6,8 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.os.PowerManager;
+import android.provider.Settings;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
@@ -38,6 +40,7 @@ import ru.vtosters.lite.BuildConfig;
import ru.vtosters.lite.concurrent.VTExecutors;
import ru.vtosters.lite.deviceinfo.OEMDetector;
import ru.vtosters.lite.ssfs.Utils;
+import ru.vtosters.lite.themes.utils.RecolorUtils;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
import ru.vtosters.lite.ui.dialogs.OTADialog;
import ru.vtosters.lite.ui.fragments.tgstickers.StickersFragment;
@@ -99,7 +102,11 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment {
this.addPreferencesFromResource(R.xml.empty);
- AndroidUtils.checkLinksVerified(this.requireActivity());
+ PowerManager manager = (PowerManager) requireActivity().getSystemService(Context.POWER_SERVICE);
+ boolean isLinksUnverified = AndroidUtils.isLinksUnverified(requireActivity());
+ boolean isDozingAvailable = Build.VERSION.SDK_INT >= 23 && !manager.isIgnoringBatteryOptimizations(AndroidUtils.getPackageName());
+ boolean areNotificationsDisabled = !AndroidUtils.areNotificationsEnabled();
+ boolean isGMSNotInstalled = !GmsHook.isAnyServicesInstalled();
if (AccountManagerUtils.isLogin()) {
Preference accountSwitcher = PreferenceFragmentUtils.addPreference(
@@ -183,20 +190,82 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment {
);
}
- if (!GmsHook.isAnyServicesInstalled()) {
- PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), R.string.gmsname);
+ if (isLinksUnverified || isDozingAvailable || areNotificationsDisabled || isGMSNotInstalled) {
+ PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), "Рекомендации");
- PreferenceFragmentUtils.addPreference(
- getPreferenceScreen(),
- "",
- requireContext().getString(R.string.installgms),
- "",
- R.drawable.ic_about_outline_28,
- preference -> {
- NavigatorUtils.switchFragment(requireContext(), InstallGMSFragment.class);
- return false;
- }
- );
+ if (isGMSNotInstalled) {
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "",
+ requireContext().getString(R.string.installgms),
+ "Отсутствие этих сервисов приводит к поломке фоновых уведомлений и проблемами работы компонентов приложения",
+ RecolorUtils.recolorDrawable(R.drawable.ic_about_outline_28, ThemesUtils.getColor(R.color.red)),
+ preference -> {
+ NavigatorUtils.switchFragment(requireContext(), InstallGMSFragment.class);
+ return false;
+ }
+ );
+ }
+
+ if (isLinksUnverified) {
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "",
+ "Не выбраны ссылки для открытия приложением",
+ "Это помешает открытию внешинх ссылок для их открытия с помощью этого приложения\n\nВ некоторых случаях необходимо отключить открытие ссылок официальным приложениям ВКонтакте",
+ RecolorUtils.recolorDrawable(R.drawable.ic_about_outline_28, ThemesUtils.getColor(R.color.red)),
+ preference -> {
+ try {
+ Intent intent = new Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:" + AndroidUtils.getPackageName()));
+ requireActivity().startActivity(intent);
+ } catch (Throwable t1) {
+ try {
+ Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + AndroidUtils.getPackageName()));
+ requireActivity().startActivity(intent);
+ } catch (Throwable ignored) {
+ // ignored
+ }
+ }
+ return false;
+ }
+ );
+ }
+
+ if (isDozingAvailable) {
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "",
+ "Отключите экономию батареи",
+ "Экономия батареи мешает получению фоновых сообщений, уведомлений и работе музыки",
+ RecolorUtils.recolorDrawable(R.drawable.ic_about_outline_28, ThemesUtils.getColor(R.color.red)),
+ preference -> {
+ @SuppressLint("BatteryLife")
+ var intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .setData(Uri.parse("package:" + AndroidUtils.getPackageName()));
+ requireActivity().startActivity(intent);
+ return false;
+ }
+ );
+ }
+
+ if (areNotificationsDisabled) {
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "",
+ "Включите уведомления",
+ "Без включенных уведомлений не получится получать сообщения и многое другое",
+ RecolorUtils.recolorDrawable(R.drawable.ic_about_outline_28, ThemesUtils.getColor(R.color.red)),
+ preference -> {
+ @SuppressLint("BatteryLife")
+ var intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .putExtra(Settings.EXTRA_APP_PACKAGE, AndroidUtils.getPackageName());
+ requireActivity().startActivity(intent);
+ return false;
+ }
+ );
+ }
}
if (Preferences.devmenu()) {
@@ -577,6 +646,18 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment {
}
);
+ PreferenceFragmentUtils.addPreference(
+ getPreferenceScreen(),
+ "",
+ "Помочь проекту",
+ "За донат можно получить приятные бонусы на аккаунт",
+ R.drawable.ic_money_circle_outline_28,
+ preference -> {
+ requireContext().startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://vtosters.app/donate")));
+ return false;
+ }
+ );
+
PreferenceFragmentUtils.addPreference(
getPreferenceScreen(),
"",
diff --git a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java
index a34dee7fa..b974b0854 100644
--- a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java
+++ b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java
@@ -1,9 +1,9 @@
package ru.vtosters.lite.utils;
import android.app.Activity;
+import android.app.NotificationManager;
import android.content.ContentResolver;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.verify.domain.DomainVerificationManager;
@@ -15,11 +15,10 @@ import android.provider.Settings;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
-import com.vk.core.dialogs.alert.VkAlertDialog;
+import androidx.core.app.NotificationManagerCompat;
import com.vk.core.util.Screen;
import com.vk.core.util.ToastUtils;
import com.vtosters.lite.general.fragments.WebViewFragment;
-import ru.vtosters.hooks.other.Preferences;
import java.io.File;
import java.io.FileOutputStream;
@@ -31,8 +30,6 @@ import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.Random;
-import static ru.vtosters.hooks.other.Preferences.getBoolValue;
-
public class AndroidUtils {
private static final String ALLOWED_CHARACTERS = "0123456789qwertyuiopasdfghjklzxcvbnm";
@@ -124,8 +121,8 @@ public class AndroidUtils {
new WebViewFragment.g(url).l().m().h().j().a(activity);
}
- public static void checkLinksVerified(Activity activity) {
- if (Build.VERSION.SDK_INT < 31) return;
+ public static boolean isLinksUnverified(Activity activity) {
+ if (Build.VERSION.SDK_INT < 31) return false;
DomainVerificationManager manager = activity.getSystemService(DomainVerificationManager.class);
DomainVerificationUserState userState;
@@ -133,7 +130,7 @@ public class AndroidUtils {
try {
userState = manager.getDomainVerificationUserState(getPackageName());
} catch (PackageManager.NameNotFoundException ignore) {
- return;
+ return false;
}
boolean hasUnverified = false;
@@ -145,32 +142,7 @@ public class AndroidUtils {
hasUnverified = stateValue != null && stateValue != DomainVerificationUserState.DOMAIN_STATE_VERIFIED && stateValue != DomainVerificationUserState.DOMAIN_STATE_SELECTED;
}
- if (hasUnverified) {
- if (getBoolValue("showUnverifDialog", true)) {
- new VkAlertDialog.Builder(activity)
- .setTitle(com.vtosters.lite.R.string.warning)
- .setMessage(AndroidUtils.getString("app_open_by_default_settings"))
- .setCancelable(false)
- .setPositiveButton(com.vtosters.lite.R.string.social_graph_skip,
- (dialogInterface, i) -> Preferences.getPreferences().edit().putBoolean("showUnverifDialog", false).apply()
- )
- .setNeutralButton(com.vtosters.lite.R.string.open_settings,
- (dialogInterface, i) -> {
- try {
- Intent intent = new Intent(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS, Uri.parse("package:" + getPackageName()));
- activity.startActivity(intent);
- } catch (Throwable t1) {
- try {
- Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + getPackageName()));
- activity.startActivity(intent);
- } catch (Throwable ignored) {
- }
- }
- }
- )
- .show();
- }
- }
+ return hasUnverified;
}
public static String MD5(String s) {
@@ -192,6 +164,15 @@ public class AndroidUtils {
return null;
}
+ public static boolean areNotificationsEnabled() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ NotificationManager manager = (NotificationManager) getGlobalContext().getSystemService(Context.NOTIFICATION_SERVICE);
+ return manager.areNotificationsEnabled();
+ } else {
+ return NotificationManagerCompat.from(getGlobalContext()).areNotificationsEnabled();
+ }
+ }
+
private static String getRandomString(int sizeOfRandomString) {
Random random = new Random();
StringBuilder sb = new StringBuilder(sizeOfRandomString);
diff --git a/smali/res/values-be/strings.xml b/smali/res/values-be/strings.xml
index 15be8cde7..4238820f8 100644
--- a/smali/res/values-be/strings.xml
+++ b/smali/res/values-be/strings.xml
@@ -6066,9 +6066,7 @@
Спампаваць MicroG
Што рабіць далей?
Што рабіць пасля ўстаноўкі MicroG?
- 1. Увайдзіце ў свой Google акаўнт \n2. Дазвольце VTLite атрымліваць
- апавяшчэнні \n3. Абнавіце рэгістрацыю Firebase у наладах у раздзеле "Іншае"
-
+ 1. Увайдзіце ў свой Google акаўнт \n2. Пераўсталюеце прыкладанне VTLite
Дапамагчы праекту
dd MMMM yyyy у HH:mm:ss
dd MMMM у HH:mm:ss
diff --git a/smali/res/values-ru/strings.xml b/smali/res/values-ru/strings.xml
index ae3c0706e..b546a439e 100644
--- a/smali/res/values-ru/strings.xml
+++ b/smali/res/values-ru/strings.xml
@@ -5420,7 +5420,7 @@
Скачать MicroG
Что делать дальше?
Что делать после установки MicroG?
- 1. Войдите в свой Google аккаунт \n2. Разрешите VTLite получать уведомления\n3. Обновите регистрацию Firebase в настройках в разделе "Другое"
+ 1. Войдите в свой Google аккаунт в MicroG \n2. Переустановите приложение VTLite
Помочь проекту
dd MMMM yyyy в HH:mm:ss
dd MMMM в HH:mm:ss
diff --git a/smali/res/values-uk/strings.xml b/smali/res/values-uk/strings.xml
index 44d6412ea..42d5e7d90 100644
--- a/smali/res/values-uk/strings.xml
+++ b/smali/res/values-uk/strings.xml
@@ -5347,7 +5347,7 @@
Завантажити MicroG
Що робити далі?
Що робити після встановлення MicroG?
- 1. Увійдіть до свого облікового запису Google \n2. Дозвольте VTLite отримувати повідомлення\n3. Оновіть реєстрацію Firebase у налаштуваннях у розділі "Інше"
+ 1. Увійдіть до свого облікового запису Google \n2. Перевстановіть додаток VTLite"
Допомогти проекту
dd MMMM yyyy в HH:mm:ss
dd MMMM в HH:mm:ss
diff --git a/smali/res/values/strings.xml b/smali/res/values/strings.xml
index 2b8d4e19d..6ba2c3569 100644
--- a/smali/res/values/strings.xml
+++ b/smali/res/values/strings.xml
@@ -5554,7 +5554,7 @@ Filters are not case-sensitive!"
Download MicroG
What to do next?
What to do after installing MicroG?
- 1. Log in to your Google account \n2. Allow VTLite to receive notifications\n3. Update Firebase registration in Other settings
+ 1. Log in to your Google account \n2. Reinstall VTLite application
Donate
dd MMMM yyyy HH:mm:ss
dd MMMM HH:mm:ss
diff --git a/smali/res/xml/preferences_gms.xml b/smali/res/xml/preferences_gms.xml
index fd298be58..55c9b49a4 100644
--- a/smali/res/xml/preferences_gms.xml
+++ b/smali/res/xml/preferences_gms.xml
@@ -28,11 +28,8 @@
-
-
+ android:key="microg"
+ android:title="@string/gms_download_microg"/>