Move Magisk Manager files into subfolder

This commit is contained in:
topjohnwu
2018-07-18 17:47:53 +08:00
parent 201d8a97d4
commit f8076825cb
248 changed files with 0 additions and 0 deletions
@@ -0,0 +1,94 @@
package com.topjohnwu.magisk.components;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.widget.Toast;
import com.topjohnwu.magisk.NoUIActivity;
import com.topjohnwu.magisk.R;
import com.topjohnwu.magisk.utils.Const;
public abstract class Activity extends FlavorActivity {
protected static Runnable permissionGrantCallback;
private ActivityResultListener activityResultListener;
public Activity() {
super();
Configuration configuration = new Configuration();
configuration.setLocale(Application.locale);
applyOverrideConfiguration(configuration);
}
public static void runWithPermission(Context context, String[] permissions, Runnable callback) {
boolean granted = true;
for (String perm : permissions) {
if (ContextCompat.checkSelfPermission(context, perm) != PackageManager.PERMISSION_GRANTED)
granted = false;
}
if (granted) {
callback.run();
} else {
// Passed in context should be an activity if not granted, need to show dialog!
permissionGrantCallback = callback;
if (!(context instanceof Activity)) {
// Start activity to show dialog
Intent intent = new Intent(context, NoUIActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Const.Key.INTENT_PERM, permissions);
context.startActivity(intent);
} else {
ActivityCompat.requestPermissions((Activity) context, permissions, 0);
}
}
}
public void runWithPermission(String[] permissions, Runnable callback) {
runWithPermission(this, permissions, callback);
}
@Override
public Application getApplicationContext() {
return (Application) super.getApplicationContext();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
boolean grant = true;
for (int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED)
grant = false;
}
if (grant) {
if (permissionGrantCallback != null) {
permissionGrantCallback.run();
}
} else {
Application.toast(R.string.no_rw_storage, Toast.LENGTH_LONG);
}
permissionGrantCallback = null;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (activityResultListener != null)
activityResultListener.onActivityResult(requestCode, resultCode, data);
activityResultListener = null;
}
public void startActivityForResult(Intent intent, int requestCode, ActivityResultListener listener) {
activityResultListener = listener;
super.startActivityForResult(intent, requestCode);
}
public interface ActivityResultListener {
void onActivityResult(int requestCode, int resultCode, Intent data);
}
}
@@ -0,0 +1,34 @@
package com.topjohnwu.magisk.components;
import android.os.Handler;
import android.widget.Toast;
import java.lang.ref.WeakReference;
import java.util.Locale;
public abstract class Application extends android.app.Application {
public static WeakReference<Application> weakSelf;
public static Locale locale;
public static Locale defaultLocale;
private static Handler mHandler = new Handler();
public Application() {
weakSelf = new WeakReference<>(this);
}
@Override
public void onCreate() {
super.onCreate();
locale = defaultLocale = Locale.getDefault();
}
public static void toast(CharSequence msg, int duration) {
mHandler.post(() -> Toast.makeText(weakSelf.get(), msg, duration).show());
}
public static void toast(int resId, int duration) {
mHandler.post(() -> Toast.makeText(weakSelf.get(), resId, duration).show());
}
}