MainActivity.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package io.github.sdlpal;
  2. import android.Manifest;
  3. import android.content.DialogInterface;
  4. import android.content.Intent;
  5. import android.content.pm.PackageManager;
  6. import android.os.*;
  7. import android.support.annotation.NonNull;
  8. import android.support.v4.app.ActivityCompat;
  9. import android.support.v4.content.ContextCompat;
  10. import android.support.v7.app.AlertDialog;
  11. import android.support.v7.app.AppCompatActivity;
  12. import android.widget.Toast;
  13. import java.io.*;
  14. public class MainActivity extends AppCompatActivity {
  15. private static final String TAG = "sdlpal-debug";
  16. public static native void setAppPath(String basepath, String datapath, String cachepath);
  17. public static boolean crashed = false;
  18. private final static int REQUEST_FILESYSTEM_ACCESS_CODE = 101;
  19. private boolean checkIfAlreadyhavePermission() {
  20. int result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
  21. if (result == PackageManager.PERMISSION_GRANTED) {
  22. return true;
  23. } else {
  24. return false;
  25. }
  26. }
  27. private void requestForSpecificPermission() {
  28. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_FILESYSTEM_ACCESS_CODE);
  29. }
  30. @Override
  31. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  32. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  33. switch (requestCode) {
  34. case REQUEST_FILESYSTEM_ACCESS_CODE:
  35. if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  36. StartGame();
  37. } else {
  38. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  39. builder.setMessage(R.string.toast_requestpermission);
  40. builder.setCancelable(false);
  41. builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
  42. @Override
  43. public void onClick(DialogInterface dialogInterface, int i) {
  44. requestForSpecificPermission();
  45. }
  46. });
  47. builder.create().show();
  48. }
  49. break;
  50. }
  51. }
  52. @Override
  53. public void onCreate(Bundle savedInstanceState) {
  54. super.onCreate(savedInstanceState);
  55. int MyVersion = Build.VERSION.SDK_INT;
  56. if (MyVersion < Build.VERSION_CODES.M || checkIfAlreadyhavePermission())
  57. StartGame();
  58. else
  59. requestForSpecificPermission();
  60. }
  61. public void StartGame() {
  62. System.loadLibrary("SDL2");
  63. System.loadLibrary("main");
  64. String dataPath = getApplicationContext().getFilesDir().getPath();
  65. String cachePath = getApplicationContext().getCacheDir().getPath();
  66. String sdcardState = Environment.getExternalStorageState();
  67. if (sdcardState.equals(Environment.MEDIA_MOUNTED)){
  68. setAppPath(Environment.getExternalStorageDirectory().getPath() + "/sdlpal/", dataPath, cachePath);
  69. } else {
  70. setAppPath("/sdcard/sdlpal/", dataPath, cachePath);
  71. }
  72. File runningFile = new File(cachePath + "/running");
  73. crashed = runningFile.exists();
  74. Intent intent;
  75. if (SettingsActivity.loadConfigFile() || crashed) {
  76. runningFile.delete();
  77. intent = new Intent(this, SettingsActivity.class);
  78. } else {
  79. intent = new Intent(this, PalActivity.class);
  80. }
  81. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  82. startActivity(intent);
  83. finish();
  84. }
  85. @Override
  86. public void onDestroy() {
  87. super.onDestroy();
  88. }
  89. }