summaryrefslogtreecommitdiff
path: root/build/android/src/main/java/net.minetest.minetest/MainActivity.java
diff options
context:
space:
mode:
authorMaksim <MoNTE48@mail.ua>2018-12-03 00:39:35 +0100
committerParamat <paramat@users.noreply.github.com>2018-12-02 23:39:35 +0000
commitf70f7875e2a2e49f80470832ae97e73f171d6460 (patch)
tree6620b45d2e0dd0b5e910120d6f17bcb471370c46 /build/android/src/main/java/net.minetest.minetest/MainActivity.java
parent1b0fd195c614ffa1b04d687e7793fb5bb266c535 (diff)
downloadminetest-f70f7875e2a2e49f80470832ae97e73f171d6460.tar.gz
minetest-f70f7875e2a2e49f80470832ae97e73f171d6460.tar.bz2
minetest-f70f7875e2a2e49f80470832ae97e73f171d6460.zip
Update Android java code (#7820)
Targets SDK 26 as required by the playstore. Fixes screen auto-rotation closing game. Hides on-screen navigation bar if present. Update gradlew. Fix display aspect on 18+/:9 displays (like a Samsung Galaxy S9). Remove small app icons, not required. Fix xml in unpacking activity. Support Android permission: On Android 6.0+ you need to manually give write permission (as required by google). Background during unpacking (just a demo for now). Material Design: no more Android 2 interface. Immersive mode (Android 4.4+ - hide NavBar for fullscreen mode).
Diffstat (limited to 'build/android/src/main/java/net.minetest.minetest/MainActivity.java')
-rw-r--r--build/android/src/main/java/net.minetest.minetest/MainActivity.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/build/android/src/main/java/net.minetest.minetest/MainActivity.java b/build/android/src/main/java/net.minetest.minetest/MainActivity.java
new file mode 100644
index 000000000..1baa71668
--- /dev/null
+++ b/build/android/src/main/java/net.minetest.minetest/MainActivity.java
@@ -0,0 +1,79 @@
+package net.minetest.minetest;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class MainActivity extends Activity {
+
+ private final static int PERMISSIONS = 1;
+ private static final String[] REQUIRED_SDK_PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ checkPermission();
+ } else {
+ next();
+ }
+ }
+
+ protected void checkPermission() {
+ final List<String> missingPermissions = new ArrayList<String>();
+ // check required permission
+ for (final String permission : REQUIRED_SDK_PERMISSIONS) {
+ final int result = ContextCompat.checkSelfPermission(this, permission);
+ if (result != PackageManager.PERMISSION_GRANTED) {
+ missingPermissions.add(permission);
+ }
+ }
+ if (!missingPermissions.isEmpty()) {
+ // request permission
+ final String[] permissions = missingPermissions
+ .toArray(new String[missingPermissions.size()]);
+ ActivityCompat.requestPermissions(this, permissions, PERMISSIONS);
+ } else {
+ final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
+ Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED);
+ onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS,
+ grantResults);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
+ @NonNull int[] grantResults) {
+ switch (requestCode) {
+ case PERMISSIONS:
+ for (int index = 0; index < permissions.length; index++) {
+ if (grantResults[index] != PackageManager.PERMISSION_GRANTED) {
+ // permission not granted - toast and exit
+ Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show();
+ finish();
+ return;
+ }
+ }
+ // permission were granted - run
+ next();
+ break;
+ }
+ }
+
+ public void next() {
+ Intent intent = new Intent(this, MtNativeActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivity(intent);
+ }
+}