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.