Add reminder text on Storage Permission

The app displays message when it doesn't start properly because of Storage Permission
This commit is contained in:
Anthony Calosa
2020-04-02 18:20:01 +08:00
parent 71cc16953c
commit 58f6463a5d
5 changed files with 86 additions and 5 deletions

View File

@@ -7,6 +7,7 @@
<uses-sdk <uses-sdk
android:minSdkVersion="19" android:minSdkVersion="19"
android:targetSdkVersion="26" /> android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- This one needs Android Runtime Permission for Android 6+ --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- This one needs Android Runtime Permission for Android 6+ -->
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>

View File

@@ -104,6 +104,13 @@
<artifactId>gdx-backend-android</artifactId> <artifactId>gdx-backend-android</artifactId>
<version>1.9.10</version> <version>1.9.10</version>
</dependency> </dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>support-v4</artifactId>
<version>23.1.1</version>
<scope>system</scope>
<systemPath>${pom.basedir}/libs/android-support-v4.jar</systemPath>
</dependency>
</dependencies> </dependencies>
<profiles> <profiles>

View File

@@ -29,6 +29,8 @@
-dontwarn javax.** -dontwarn javax.**
-dontwarn org.apache.logging.log4j.** -dontwarn org.apache.logging.log4j.**
-dontwarn module-info -dontwarn module-info
## Support library
-dontwarn android.support.**
-keep class forge.** { *; } -keep class forge.** { *; }
-keep class com.thoughtworks.xstream.** { *; } -keep class com.thoughtworks.xstream.** { *; }

View File

@@ -18,8 +18,16 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.PowerManager; import android.os.PowerManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplication;
import forge.Forge; import forge.Forge;
@@ -35,13 +43,75 @@ import java.io.OutputStream;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
public class Main extends AndroidApplication { public class Main extends AndroidApplication {
AndroidAdapter Gadapter;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
AndroidAdapter adapter = new AndroidAdapter(this.getContext()); Gadapter = new AndroidAdapter(this.getContext());
initForge(Gadapter);
//permission
if(!checkPermission()){
//why does it crash when requesting permission???
//requestPermission();
//reminder text instead for now...
displayMessage(Gadapter, this);
}
}
private void displayMessage(AndroidAdapter adapter, Context context){
TableLayout TL = new TableLayout(context);
TableRow row = new TableRow(context);
TextView text = new TextView(context);
text.setGravity(Gravity.LEFT);
text.setText("Forge needs Storage Permission to run properly...\n" +
"To allow this app follow this simple steps below.\n" +
" 1) On your Android device, open the Settings app.\n" +
" 2) Tap Apps & notifications.\n" +
" 3) Tap the app you want to update (Forge).\n" +
" 4) Tap Permissions.\n" +
" 5) Turn on the Storage Permission.\n" +
"Tap anywhere to exit...");
row.addView(text);
row.setGravity(Gravity.CENTER);
TL.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
TL.setGravity(Gravity.CENTER);
TL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.exit();
}
});
setContentView(TL);
}
@Override
public void onBackPressed() {
if (Gadapter!=null)
Gadapter.exit();
super.onBackPressed();
}
private boolean checkPermission() {
int result = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (result == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
}
private void requestPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this, "Please allow storage permission in App Settings.", Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
private void initForge(AndroidAdapter adapter){
//establish assets directory //establish assets directory
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
Gdx.app.error("Forge", "Can't access external storage"); Gdx.app.error("Forge", "Can't access external storage");
@@ -66,14 +136,15 @@ public class Main extends AndroidApplication {
adapter.switchOrientationFile = assetsDir + "switch_orientation.ini"; adapter.switchOrientationFile = assetsDir + "switch_orientation.ini";
boolean landscapeMode = adapter.isTablet == !FileUtil.doesFileExist(adapter.switchOrientationFile); boolean landscapeMode = adapter.isTablet == !FileUtil.doesFileExist(adapter.switchOrientationFile);
if (landscapeMode) { if (landscapeMode) {
Main.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); Main.this.setRequestedOrientation(Build.VERSION.SDK_INT >= 26 ?
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : //Oreo and above has virtual back/menu buttons
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} }
else { else {
Main.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); Main.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} }
boolean value = Build.VERSION.SDK_INT >= 26; initialize(Forge.getApp(new AndroidClipboard(), adapter, assetsDir, Build.VERSION.SDK_INT >= 26));
initialize(Forge.getApp(new AndroidClipboard(), adapter, assetsDir, value));
} }
/*@Override /*@Override