|
@@ -1,8 +1,18 @@
|
|
|
package io.github.sdlpal;
|
|
|
|
|
|
+import android.Manifest;
|
|
|
+import android.content.DialogInterface;
|
|
|
import android.content.Intent;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
import android.os.*;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
+import android.support.v4.app.ActivityCompat;
|
|
|
+import android.support.v4.content.ContextCompat;
|
|
|
+import android.support.v7.app.AlertDialog;
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
+import android.provider.Settings;
|
|
|
+import android.net.Uri;
|
|
|
+
|
|
|
import java.io.*;
|
|
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
@@ -12,9 +22,68 @@ public class MainActivity extends AppCompatActivity {
|
|
|
|
|
|
public static boolean crashed = false;
|
|
|
|
|
|
+ private final static int REQUEST_FILESYSTEM_ACCESS_CODE = 101;
|
|
|
+ private final AppCompatActivity mActivity = this;
|
|
|
+
|
|
|
+ private void requestForPermissions(boolean setupManuallyIfRequestForbidden) {
|
|
|
+ if (ActivityCompat.shouldShowRequestPermissionRationale(mActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
|
|
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_FILESYSTEM_ACCESS_CODE);
|
|
|
+ } else {
|
|
|
+ if (setupManuallyIfRequestForbidden) {
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
|
|
+ Uri uri = Uri.fromParts("package", getPackageName(), null);
|
|
|
+ intent.setData(uri);
|
|
|
+ startActivity(intent);
|
|
|
+ } else {
|
|
|
+ alertUser();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void alertUser() {
|
|
|
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
|
+ builder.setMessage(R.string.toast_requestpermission);
|
|
|
+ builder.setCancelable(false);
|
|
|
+ builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialogInterface, int i) {
|
|
|
+ requestForPermissions(true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialogInterface, int i) {
|
|
|
+ System.exit(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ builder.create().show();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
- public void onCreate(Bundle savedInstanceState) {
|
|
|
- super.onCreate(savedInstanceState);
|
|
|
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
|
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
|
+ switch (requestCode) {
|
|
|
+ case REQUEST_FILESYSTEM_ACCESS_CODE:
|
|
|
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
|
+ StartGame();
|
|
|
+ } else {
|
|
|
+ alertUser();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void onStart() {
|
|
|
+ super.onStart();
|
|
|
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ) {
|
|
|
+ StartGame();
|
|
|
+ } else {
|
|
|
+ requestForPermissions(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void StartGame() {
|
|
|
|
|
|
System.loadLibrary("SDL2");
|
|
|
System.loadLibrary("main");
|