mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-10-21 14:28:52 +00:00
Small changes
This commit is contained in:
@@ -15,6 +15,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StyleRes;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.collection.SparseArrayCompat;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
@@ -32,7 +33,7 @@ public abstract class BaseActivity extends AppCompatActivity implements Event.Au
|
||||
|
||||
static int[] EMPTY_INT_ARRAY = new int[0];
|
||||
|
||||
private ActivityResultListener activityResultListener;
|
||||
private SparseArrayCompat<ActivityResultListener> resultListeners = new SparseArrayCompat<>();
|
||||
public App app = App.self;
|
||||
|
||||
static {
|
||||
@@ -117,13 +118,15 @@ public abstract class BaseActivity extends AppCompatActivity implements Event.Au
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (activityResultListener != null)
|
||||
activityResultListener.onActivityResult(requestCode, resultCode, data);
|
||||
activityResultListener = null;
|
||||
ActivityResultListener listener = resultListeners.get(requestCode);
|
||||
if (listener != null) {
|
||||
resultListeners.remove(requestCode);
|
||||
listener.onActivityResult(resultCode, data);
|
||||
}
|
||||
}
|
||||
|
||||
public void startActivityForResult(Intent intent, int requestCode, ActivityResultListener listener) {
|
||||
activityResultListener = listener;
|
||||
resultListeners.put(requestCode, listener);
|
||||
super.startActivityForResult(intent, requestCode);
|
||||
}
|
||||
|
||||
@@ -145,7 +148,7 @@ public abstract class BaseActivity extends AppCompatActivity implements Event.Au
|
||||
}
|
||||
|
||||
public interface ActivityResultListener {
|
||||
void onActivityResult(int requestCode, int resultCode, Intent data);
|
||||
void onActivityResult(int resultCode, Intent data);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -35,10 +35,12 @@ public abstract class BaseFragment extends Fragment implements Event.AutoListene
|
||||
|
||||
@Override
|
||||
public void startActivityForResult(Intent intent, int requestCode) {
|
||||
startActivityForResult(intent, requestCode, this::onActivityResult);
|
||||
startActivityForResult(intent, requestCode, (resultCode, data) ->
|
||||
onActivityResult(requestCode, resultCode, data));
|
||||
}
|
||||
|
||||
public void startActivityForResult(Intent intent, int requestCode, BaseActivity.ActivityResultListener listener) {
|
||||
public void startActivityForResult(Intent intent, int requestCode,
|
||||
BaseActivity.ActivityResultListener listener) {
|
||||
((BaseActivity) requireActivity()).startActivityForResult(intent, requestCode, listener);
|
||||
}
|
||||
|
||||
|
@@ -26,7 +26,7 @@ class InstallMethodDialog extends AlertDialog.Builder {
|
||||
InstallMethodDialog(BaseActivity activity, List<String> options) {
|
||||
super(activity);
|
||||
setTitle(R.string.select_method);
|
||||
setItems(options.toArray(new String [0]), (dialog, idx) -> {
|
||||
setItems(options.toArray(new String[0]), (dialog, idx) -> {
|
||||
Intent intent;
|
||||
switch (idx) {
|
||||
case 1:
|
||||
@@ -48,25 +48,26 @@ class InstallMethodDialog extends AlertDialog.Builder {
|
||||
});
|
||||
}
|
||||
|
||||
private void patchBoot(BaseActivity a) {
|
||||
Utils.toast(R.string.boot_file_patch_msg, Toast.LENGTH_LONG);
|
||||
Intent intent = new Intent(Intent.ACTION_GET_CONTENT).setType("*/*").addCategory(Intent.CATEGORY_OPENABLE);
|
||||
a.runWithExternalRW(() ->
|
||||
a.startActivityForResult(intent, Const.ID.SELECT_BOOT,
|
||||
(requestCode, resultCode, data) -> {
|
||||
if (requestCode == Const.ID.SELECT_BOOT &&
|
||||
resultCode == Activity.RESULT_OK && data != null) {
|
||||
Intent i = new Intent(a, ClassMap.get(FlashActivity.class))
|
||||
.setData(data.getData())
|
||||
.putExtra(Const.Key.FLASH_ACTION, Const.Value.PATCH_BOOT);
|
||||
a.startActivity(i);
|
||||
}
|
||||
})
|
||||
);
|
||||
private void patchBoot(BaseActivity activity) {
|
||||
activity.runWithExternalRW(() -> {
|
||||
Utils.toast(R.string.patch_file_msg, Toast.LENGTH_LONG);
|
||||
Intent intent = new Intent(Intent.ACTION_GET_CONTENT)
|
||||
.setType("*/*")
|
||||
.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
activity.startActivityForResult(intent, Const.ID.SELECT_BOOT,
|
||||
(resultCode, data) -> {
|
||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
||||
Intent i = new Intent(activity, ClassMap.get(FlashActivity.class))
|
||||
.setData(data.getData())
|
||||
.putExtra(Const.Key.FLASH_ACTION, Const.Value.PATCH_BOOT);
|
||||
activity.startActivity(i);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void downloadOnly(BaseActivity a) {
|
||||
a.runWithExternalRW(() -> {
|
||||
private void downloadOnly(BaseActivity activity) {
|
||||
activity.runWithExternalRW(() -> {
|
||||
String filename = Utils.fmt("Magisk-v%s(%d).zip",
|
||||
Config.remoteMagiskVersionString, Config.remoteMagiskVersionCode);
|
||||
File zip = new File(Const.EXTERNAL_PATH, filename);
|
||||
@@ -76,8 +77,8 @@ class InstallMethodDialog extends AlertDialog.Builder {
|
||||
.setErrorHandler(((conn, e) -> progress.dlFail()))
|
||||
.getAsFile(zip, f -> {
|
||||
progress.dlDone();
|
||||
SnackbarMaker.make(a,
|
||||
a.getString(R.string.internal_storage, "/Download/" + filename),
|
||||
SnackbarMaker.make(activity,
|
||||
activity.getString(R.string.internal_storage, "/Download/" + filename),
|
||||
Snackbar.LENGTH_LONG).show();
|
||||
});
|
||||
});
|
||||
|
@@ -25,7 +25,7 @@ public class MagiskInstallDialog extends CustomAlertDialog {
|
||||
setPositiveButton(R.string.install, (d, i) -> {
|
||||
List<String> options = new ArrayList<>();
|
||||
options.add(a.getString(R.string.download_zip_only));
|
||||
options.add(a.getString(R.string.patch_boot_file));
|
||||
options.add(a.getString(R.string.select_patch_file));
|
||||
if (Shell.rootAccess()) {
|
||||
options.add(a.getString(R.string.direct_install));
|
||||
String s = ShellUtils.fastCmd("grep_prop ro.build.ab_update");
|
||||
|
Reference in New Issue
Block a user