diff --git a/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java b/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java index 4c39fdd1..c1c2b811 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java @@ -33,7 +33,8 @@ import java.util.List; public class StartupDialogFragment extends DialogFragment { private static final String - HINT_BATTERY_OPTIMIZATIONS = "BatteryOptimizations"; + HINT_BATTERY_OPTIMIZATIONS = "BatteryOptimizations", + HINT_VENDOR_SPECIFIC_BUGS = "VendorSpecificBugs"; private static final String ARGS_MODE = "mode"; @@ -41,6 +42,7 @@ public class StartupDialogFragment extends DialogFragment { BATTERY_OPTIMIZATIONS, DEVELOPMENT_VERSION, GOOGLE_PLAY_ACCOUNTS_REMOVED, + VENDOR_SPECIFIC_BUGS, } public static StartupDialogFragment[] getStartupDialogs(Context context) { @@ -56,6 +58,12 @@ public class StartupDialogFragment extends DialogFragment { dialogs.add(StartupDialogFragment.instantiate(Mode.BATTERY_OPTIMIZATIONS)); } + // Vendor specific bugs + String manu = Build.MANUFACTURER; + if (!HintManager.getHintSeen(context, HINT_BATTERY_OPTIMIZATIONS) && (manu.equalsIgnoreCase("Xiaomi") || manu.equalsIgnoreCase("Huawei")) && !Build.DISPLAY.contains("lineage")) { + dialogs.add(StartupDialogFragment.instantiate(Mode.VENDOR_SPECIFIC_BUGS)); + } + Collections.reverse(dialogs); return dialogs.toArray(new StartupDialogFragment[dialogs.size()]); } @@ -120,6 +128,28 @@ public class StartupDialogFragment extends DialogFragment { } }) .create(); + case VENDOR_SPECIFIC_BUGS: + return new AlertDialog.Builder(getActivity()) + .setTitle(R.string.startup_vendor_specific_bugs) + .setMessage(R.string.startup_vendor_specific_bugs_message) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }) + .setNeutralButton(R.string.startup_vendor_specific_bugs_open_faq, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + WebViewActivity.openUrl(getContext(), Constants.faqUri.buildUpon().encodedFragment("vendor-issues").build()); + } + }) + .setNegativeButton(R.string.startup_dont_show_again, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + HintManager.setHintSeen(getContext(), HINT_VENDOR_SPECIFIC_BUGS, true); + } + }) + .create(); } throw new IllegalArgumentException(/* illegal mode argument */); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fb8e6651..ef875f20 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -32,6 +32,9 @@ EteSync Preview Release This is a development version of EteSync. Be aware that things may not work as expected. Please give us constructive feedback to improve EteSync. Give feedback + Potential Vendor Bugs + EteSync has detected you are using an Android version that may contain vendor specific bugs.\nPlease take a look at the FAQ for more information. + Open FAQ License terms