diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml index 8936ab5ee..4b9eb7cd7 100644 --- a/AndorsTrail/res/values/strings.xml +++ b/AndorsTrail/res/values/strings.xml @@ -706,5 +706,7 @@ Every skill level increases the attack chance of weapons with %1$d %% of their o Obsidian Changing UI theme requires restart. Andor\'s Trail has been closed. + Access to storage is mandatory for Andor\'s Trail to handle saved games and worldmap. Closing Andor\'s Trail. + \ No newline at end of file diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java index 4e77a4e27..79653384d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java @@ -29,7 +29,7 @@ public final class AndorsTrailApplication extends Application { public static final boolean DEVELOPMENT_DEBUGMESSAGES = false; public static final boolean DEVELOPMENT_INCOMPATIBLE_SAVEGAMES = DEVELOPMENT_DEBUGRESOURCES || DEVELOPMENT_DEBUGBUTTONS || DEVELOPMENT_FASTSPEED; public static final int CURRENT_VERSION = DEVELOPMENT_INCOMPATIBLE_SAVEGAMES ? 999 : 44; - public static final String CURRENT_VERSION_DISPLAY = "0.7.3dev"; + public static final String CURRENT_VERSION_DISPLAY = "0.7.3"; public static final boolean IS_RELEASE_VERSION = !CURRENT_VERSION_DISPLAY.matches(".*[a-d].*"); private final AndorsTrailPreferences preferences = new AndorsTrailPreferences(); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/StartScreenActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/StartScreenActivity.java index eaefb8619..3e9cd0571 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/StartScreenActivity.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/StartScreenActivity.java @@ -1,18 +1,5 @@ package com.gpl.rpg.AndorsTrail.activity; -import android.content.Intent; -import android.content.res.Resources; -import android.graphics.drawable.AnimationDrawable; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentManager.OnBackStackChangedListener; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewTreeObserver; -import android.widget.ImageView; -import android.widget.TextView; - import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences; import com.gpl.rpg.AndorsTrail.R; @@ -24,6 +11,24 @@ import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager; import com.gpl.rpg.AndorsTrail.util.ThemeHelper; import com.gpl.rpg.AndorsTrail.view.CloudsAnimatorView; +import android.Manifest; +import android.annotation.TargetApi; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.graphics.drawable.AnimationDrawable; +import android.os.Build; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager.OnBackStackChangedListener; +import android.view.KeyEvent; +import android.view.View; +import android.view.ViewTreeObserver; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + public final class StartScreenActivity extends FragmentActivity implements OnNewGameRequestedListener, GameCreationOverListener, OnBackStackChangedListener { private TextView tv; @@ -104,7 +109,32 @@ public final class StartScreenActivity extends FragmentActivity implements OnNew toggleUiVisibility(); app.getWorldSetup().startResourceLoader(res); + + checkAndRequestPermissions(); + } + + private static final int READ_EXTERNAL_STORAGE_REQUEST=1; + private static final int WRITE_EXTERNAL_STORAGE_REQUEST=2; + + @TargetApi(23) + private void checkAndRequestPermissions() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (getApplicationContext().checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + this.requestPermissions(new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_REQUEST); + } + if (getApplicationContext().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + this.requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST); + } + } + } + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + if (grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) { + Toast.makeText(this, R.string.storage_permissions_mandatory, Toast.LENGTH_LONG).show(); + ((AndorsTrailApplication)getApplication()).discardWorld(); + finish(); + } } private void toggleUiVisibility() {