mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-06-12 13:17:39 +02:00
Fix crashes when Google Play Service require update
This commit is contained in:
@ -19,8 +19,9 @@ import com.topjohnwu.magisk.utils.Utils;
|
||||
|
||||
public class Activity extends AppCompatActivity {
|
||||
|
||||
private AssetManager mAssetManager = null;
|
||||
private Resources mResources = null;
|
||||
private AssetManager swappedAssetManager = null;
|
||||
private Resources swappedResources = null;
|
||||
private Resources.Theme swappedTheme = null;
|
||||
private ActivityResultListener activityResultListener;
|
||||
|
||||
public Activity() {
|
||||
@ -57,14 +58,19 @@ public class Activity extends AppCompatActivity {
|
||||
mm.permissionGrantCallback = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resources.Theme getTheme() {
|
||||
return swappedTheme == null ? super.getTheme() : swappedTheme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AssetManager getAssets() {
|
||||
return mAssetManager == null ? super.getAssets() : mAssetManager;
|
||||
return swappedAssetManager == null ? super.getAssets() : swappedAssetManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resources getResources() {
|
||||
return mResources == null ? super.getResources() : mResources;
|
||||
return swappedResources == null ? super.getResources() : swappedResources;
|
||||
}
|
||||
|
||||
public MagiskManager getMagiskManager() {
|
||||
@ -92,30 +98,27 @@ public class Activity extends AppCompatActivity {
|
||||
activityResultListener = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startActivityForResult(Intent intent, int requestCode) {
|
||||
startActivityForResult(intent, requestCode, this::onActivityResult);
|
||||
}
|
||||
|
||||
public void startActivityForResult(Intent intent, int requestCode, ActivityResultListener listener) {
|
||||
activityResultListener = listener;
|
||||
super.startActivityForResult(intent, requestCode);
|
||||
}
|
||||
|
||||
@Keep
|
||||
public void swapResources(String dexPath) {
|
||||
mAssetManager = Utils.getAssets(dexPath);
|
||||
if (mAssetManager == null)
|
||||
public void swapResources(String dexPath, int resId) {
|
||||
swappedAssetManager = Utils.getAssets(dexPath);
|
||||
if (swappedAssetManager == null)
|
||||
return;
|
||||
Resources res = super.getResources();
|
||||
mResources = new Resources(mAssetManager, res.getDisplayMetrics(), res.getConfiguration());
|
||||
mResources.newTheme().setTo(super.getTheme());
|
||||
swappedResources = new Resources(swappedAssetManager, res.getDisplayMetrics(), res.getConfiguration());
|
||||
swappedTheme = swappedResources.newTheme();
|
||||
swappedTheme.applyStyle(resId, true);
|
||||
}
|
||||
|
||||
@Keep
|
||||
public void restoreResources() {
|
||||
mAssetManager = null;
|
||||
mResources = null;
|
||||
swappedAssetManager = null;
|
||||
swappedResources = null;
|
||||
swappedTheme = null;
|
||||
}
|
||||
|
||||
public interface ActivityResultListener {
|
||||
|
Reference in New Issue
Block a user