From db165257f240953a973c1199f0dd36fff1d20d7e Mon Sep 17 00:00:00 2001 From: Mygod Date: Tue, 28 Jul 2020 05:01:20 +0800 Subject: [PATCH] Remove dependency on useless getSystemContext from librootjava --- mobile/src/main/java/be/mygod/librootkotlinx/Utils.kt | 9 +++++++++ .../java/be/mygod/vpnhotspot/root/RepeaterCommands.kt | 3 +-- .../main/java/be/mygod/vpnhotspot/root/RootManager.kt | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mobile/src/main/java/be/mygod/librootkotlinx/Utils.kt b/mobile/src/main/java/be/mygod/librootkotlinx/Utils.kt index c0d27f04..f2f21c54 100644 --- a/mobile/src/main/java/be/mygod/librootkotlinx/Utils.kt +++ b/mobile/src/main/java/be/mygod/librootkotlinx/Utils.kt @@ -1,6 +1,9 @@ +@file:JvmName("Utils") + package be.mygod.librootkotlinx import android.annotation.SuppressLint +import android.content.Context import android.os.Parcel import android.os.Parcelable import android.util.* @@ -8,6 +11,12 @@ import kotlinx.android.parcel.Parcelize class NoShellException(cause: Throwable) : Exception("Root missing", cause) +val systemContext by lazy { + val classActivityThread = Class.forName("android.app.ActivityThread") + val activityThread = classActivityThread.getMethod("systemMain").invoke(null) + classActivityThread.getMethod("getSystemContext").invoke(activityThread) as Context +} + @Parcelize data class ParcelableByte(val value: Byte) : Parcelable diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/root/RepeaterCommands.kt b/mobile/src/main/java/be/mygod/vpnhotspot/root/RepeaterCommands.kt index 0a86f9c8..eb0a2dcd 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/root/RepeaterCommands.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/root/RepeaterCommands.kt @@ -13,7 +13,6 @@ import be.mygod.vpnhotspot.net.wifi.WifiP2pManagerHelper.requestDeviceAddress import be.mygod.vpnhotspot.net.wifi.WifiP2pManagerHelper.requestPersistentGroupInfo import be.mygod.vpnhotspot.net.wifi.WifiP2pManagerHelper.setWifiP2pChannels import be.mygod.vpnhotspot.util.Services -import eu.chainfire.librootjava.RootJava import kotlinx.android.parcel.Parcelize import java.io.File import java.io.IOException @@ -99,7 +98,7 @@ object RepeaterCommands { if (target == channel) channel = null } } - return initialize(RootJava.getSystemContext(), Looper.getMainLooper(), uninitializer).also { + return initialize(systemContext, Looper.getMainLooper(), uninitializer).also { uninitializer.target = it channel = it // cache the instance until invalidated } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/root/RootManager.kt b/mobile/src/main/java/be/mygod/vpnhotspot/root/RootManager.kt index ca02f216..6996861d 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/root/RootManager.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/root/RootManager.kt @@ -5,10 +5,10 @@ import android.util.Log import be.mygod.librootkotlinx.RootCommandNoResult import be.mygod.librootkotlinx.RootServer import be.mygod.librootkotlinx.RootSession +import be.mygod.librootkotlinx.systemContext import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.BuildConfig import be.mygod.vpnhotspot.util.Services -import eu.chainfire.librootjava.RootJava import kotlinx.android.parcel.Parcelize import timber.log.Timber @@ -29,7 +29,7 @@ object RootManager : RootSession() { } } }) - Services.init(RootJava.getSystemContext()) + Services.init(systemContext) return null } }