Update SplashActivity.java

This commit is contained in:
ShirosakiMio 2024-06-14 18:50:57 +08:00
parent a59884b319
commit 7d554c1c55
1 changed files with 21 additions and 17 deletions

View File

@ -1,21 +1,25 @@
package com.tungsten.fcl.activity;
import static android.Manifest.permission.*;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.*;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.tungsten.fcl.R;
import com.tungsten.fcl.fragment.EulaFragment;
import com.tungsten.fcl.fragment.RuntimeFragment;
@ -27,8 +31,10 @@ import com.tungsten.fcllibrary.component.FCLActivity;
import com.tungsten.fcllibrary.component.ResultListener;
import com.tungsten.fcllibrary.component.dialog.FCLAlertDialog;
import com.tungsten.fcllibrary.component.theme.ThemeEngine;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.Path;
import java.nio.file.Paths;
@SuppressLint("CustomSplashScreen")
public class SplashActivity extends FCLActivity {
@ -72,9 +78,8 @@ public class SplashActivity extends FCLActivity {
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, WRITE_EXTERNAL_STORAGE) || ActivityCompat.shouldShowRequestPermissionRationale(this, READ_EXTERNAL_STORAGE)) {
// 若用户第一次拒绝了授予那么将会弹窗提醒用户为什么需要该权限
enableAlertDialog((dialog, which) -> {
enableAlertDialog(() -> {
ActivityCompat.requestPermissions(this, new String[]{WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE}, RequestCodes.PERMISSION_REQUEST_CODE);
dialog.dismiss();
}, getString(R.string.splash_permission_title), getString(R.string.splash_permission_msg), getString(R.string.splash_permission_grant), getString(R.string.splash_permission_close));
} else {
// 没有勾选始终拒绝的化则继续请求权限
@ -111,8 +116,7 @@ public class SplashActivity extends FCLActivity {
SharedPreferences sharedPreferences = getSharedPreferences("launcher", MODE_PRIVATE);
if (sharedPreferences.getBoolean("isFirstLaunch", true)) {
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.frag_start_anim, R.anim.frag_stop_anim).replace(R.id.fragment, eulaFragment).commit();
}
else {
} else {
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.frag_start_anim, R.anim.frag_stop_anim).replace(R.id.fragment, runtimeFragment).commit();
}
}
@ -143,19 +147,19 @@ public class SplashActivity extends FCLActivity {
} else {
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) || !ActivityCompat.shouldShowRequestPermissionRationale(this, READ_EXTERNAL_STORAGE)) {
// 用户勾选了始终拒绝
enableAlertDialog((dialog, which) -> {
enableAlertDialog(() -> {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
ResultListener.startActivityForResult(this, intent, RequestCodes.PERMISSION_REQUEST_CODE, (requestCode1, resultCode, data) -> {
if (requestCode1 == RequestCodes.PERMISSION_REQUEST_CODE) {
if (ActivityCompat.checkSelfPermission(this, READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) init();
else onRequestPermissionsResult(requestCode1, permissions, grantResults);
if (ActivityCompat.checkSelfPermission(this, READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
init();
} else {
onRequestPermissionsResult(requestCode1, permissions, grantResults);
}
}
});
dialog.dismiss();
}, getString(R.string.splash_permission_title), getString(R.string.splash_permission_settings_msg), getString(R.string.splash_permission_settings), getString(R.string.splash_permission_close));
} else {
// 用户只是拒绝了权限
@ -165,12 +169,12 @@ public class SplashActivity extends FCLActivity {
}
}
private void enableAlertDialog(DialogInterface.OnClickListener positiveButtonEvent, String... strings) {
new AlertDialog.Builder(this)
private void enableAlertDialog(FCLAlertDialog.ButtonListener positiveButtonEvent, String... strings) {
new FCLAlertDialog.Builder(this)
.setTitle(String.valueOf(strings[0]))
.setMessage(String.valueOf(strings[1]))
.setPositiveButton(String.valueOf(strings[2]), positiveButtonEvent)
.setNegativeButton(String.valueOf(strings[3]), (dialog, which) -> System.exit(0))
.setNegativeButton(String.valueOf(strings[3]), () -> System.exit(0))
.setCancelable(false)
.create()
.show();