diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 438f2b5dff..b601d45815 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -76,6 +76,15 @@ public class AndroidLauncher extends AndroidApplication{ public void openDonations() { showDonations(); } + + @Override + public void requestWritePerms() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_REQUEST_CODE); + } + } + } }; if(doubleScaleTablets && isTablet(this.getContext())){ diff --git a/core/src/io/anuke/mindustry/Mindustry.java b/core/src/io/anuke/mindustry/Mindustry.java index 0f42d36d3e..7b81ef9a58 100644 --- a/core/src/io/anuke/mindustry/Mindustry.java +++ b/core/src/io/anuke/mindustry/Mindustry.java @@ -30,6 +30,7 @@ public class Mindustry extends ModuleCore { @Override public void onSceneChange(String state, String details, String icon) {} @Override public void onGameExit() {} @Override public void openDonations() {} + @Override public void requestWritePerms() {} }; public static OrderedMap idMap = new OrderedMap<>(); diff --git a/core/src/io/anuke/mindustry/io/PlatformFunction.java b/core/src/io/anuke/mindustry/io/PlatformFunction.java index 7fdc81e82b..0c0bb43118 100644 --- a/core/src/io/anuke/mindustry/io/PlatformFunction.java +++ b/core/src/io/anuke/mindustry/io/PlatformFunction.java @@ -12,4 +12,5 @@ public interface PlatformFunction{ public void onSceneChange(String state, String details, String icon); public void onGameExit(); public void openDonations(); + public void requestWritePerms(); } diff --git a/core/src/io/anuke/mindustry/ui/FileChooser.java b/core/src/io/anuke/mindustry/ui/FileChooser.java index 17f33c854f..18b2fdb556 100644 --- a/core/src/io/anuke/mindustry/ui/FileChooser.java +++ b/core/src/io/anuke/mindustry/ui/FileChooser.java @@ -6,25 +6,17 @@ import com.badlogic.gdx.graphics.g2d.GlyphLayout; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Pools; - -import java.util.Arrays; - import io.anuke.mindustry.Mindustry; import io.anuke.ucore.core.Core; import io.anuke.ucore.function.Consumer; import io.anuke.ucore.function.Predicate; import io.anuke.ucore.scene.event.Touchable; -import io.anuke.ucore.scene.ui.ButtonGroup; -import io.anuke.ucore.scene.ui.Dialog; -import io.anuke.ucore.scene.ui.Image; -import io.anuke.ucore.scene.ui.ImageButton; -import io.anuke.ucore.scene.ui.Label; -import io.anuke.ucore.scene.ui.ScrollPane; -import io.anuke.ucore.scene.ui.TextButton; -import io.anuke.ucore.scene.ui.TextField; +import io.anuke.ucore.scene.ui.*; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Unit; +import java.util.Arrays; + public class FileChooser extends FloatingDialog{ private Table files; private FileHandle homeDirectory = Gdx.files.absolute(Gdx.files.getExternalStoragePath()); @@ -47,6 +39,10 @@ public class FileChooser extends FloatingDialog{ this.filter = filter; this.selectListener = result; setupWidgets(); + + if(!open){ + Mindustry.platforms.requestWritePerms(); + } } private void setupWidgets(){ diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 55d4d91ac7..4bf88e783d 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -60,11 +60,9 @@ public class DesktopLauncher { } } - @Override - public void addDialog(TextField field){} - - @Override - public void openDonations(){} + @Override public void addDialog(TextField field){} + @Override public void openDonations(){} + @Override public void requestWritePerms() {} @Override public void onSceneChange(String state, String details, String icon) { diff --git a/html/src/io/anuke/mindustry/client/HtmlLauncher.java b/html/src/io/anuke/mindustry/client/HtmlLauncher.java index e0d854d11d..f429c5f446 100644 --- a/html/src/io/anuke/mindustry/client/HtmlLauncher.java +++ b/html/src/io/anuke/mindustry/client/HtmlLauncher.java @@ -110,17 +110,11 @@ public class HtmlLauncher extends GwtApplication { Window.open(link, "_blank", ""); } - @Override - public void addDialog(TextField field){} - - @Override - public void onSceneChange(String state, String details, String icon) {} - - @Override - public void onGameExit() {} - - @Override - public void openDonations() {} + @Override public void onSceneChange(String state, String details, String icon) {} + @Override public void onGameExit() {} + @Override public void addDialog(TextField field){} + @Override public void openDonations(){} + @Override public void requestWritePerms() {} }; return new Mindustry();