diff --git a/app/src/main/java/eu/depau/etchdroid/activities/StartActivity.kt b/app/src/main/java/eu/depau/etchdroid/activities/StartActivity.kt index a7356f5..331c267 100644 --- a/app/src/main/java/eu/depau/etchdroid/activities/StartActivity.kt +++ b/app/src/main/java/eu/depau/etchdroid/activities/StartActivity.kt @@ -4,12 +4,14 @@ import android.Manifest import android.content.Intent import android.content.pm.PackageManager import android.net.Uri +import android.os.Build import android.os.Bundle import android.os.Environment import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat +import com.codekidlabs.storagechooser.StorageChooser import eu.depau.etchdroid.R import eu.depau.etchdroid.StateKeeper import eu.depau.etchdroid.enums.FlashMethod @@ -38,6 +40,19 @@ class StartActivity : ActivityBase() { editor.apply() } + var shouldShowAndroidPieAlertDialog: Boolean + get() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) + return false + val settings = getSharedPreferences(DISMISSED_DIALOGS_PREFS, 0) + return !settings.getBoolean("Android_Pie_alert", false) + } + set(value) { + val settings = getSharedPreferences(DISMISSED_DIALOGS_PREFS, 0) + val editor = settings.edit() + editor.putBoolean("Android_Pie_alert", !value) + editor.apply() + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -75,7 +90,26 @@ class StartActivity : ActivityBase() { dialogFragment.show(supportFragmentManager, "DMGBetaAlertDialogFragment") } - fun showFilePicker() { + fun showAndroidPieAlertDialog() { + val dialogFragment = DoNotShowAgainDialogFragment(nightModeHelper.nightMode) + dialogFragment.title = getString(R.string.android_pie_bug) + dialogFragment.message = getString(R.string.android_pie_bug_dialog_text) + dialogFragment.positiveButton = getString(R.string.i_understand) + dialogFragment.listener = object : DoNotShowAgainDialogFragment.DialogListener { + override fun onDialogNegative(dialog: DoNotShowAgainDialogFragment, showAgain: Boolean) {} + override fun onDialogPositive(dialog: DoNotShowAgainDialogFragment, showAgain: Boolean) { + shouldShowAndroidPieAlertDialog = showAgain + showFilePicker(false) + } + } + dialogFragment.show(supportFragmentManager, "DMGBetaAlertDialogFragment") + } + + fun showFilePicker(showDialog: Boolean = true) { + if (showDialog && shouldShowAndroidPieAlertDialog) { + showAndroidPieAlertDialog() + return + } when (StateKeeper.flashMethod) { FlashMethod.FLASH_API -> { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT) @@ -159,7 +193,6 @@ class StartActivity : ActivityBase() { } } - fun nextStep() { val intent = Intent(this, UsbDrivePickerActivity::class.java) startActivity(intent) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c635e70..e6e84d8 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -104,4 +104,6 @@ Errore sconosciuto. Prova a ricollegare il dispositivo USB o a riavviare il dispositivo. Per favore, segnala il problema su GitHub. (decompresso) Attiva modalità notturna + Bug di Android Pie + A causa di un bug di Android 9, alcune scritture potrebbero fallire.\nSe appare un messaggio di errore \"Scrittura fallita\", riavvia il dispositivo e prova di nuovo. \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f8df20b..066ad9e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -103,4 +103,6 @@ Unknown error. Try to reattach the USB drive or reboot the device. Please file an issue on GitHub. (uncompressed) Enable night mode + Android Pie bug + There is a bug on Android 9 which causes some writes to fail.\nIf it says \"Write failed\", reboot your device and try again.