Use ExecutorCompat
This commit is contained in:
@@ -13,6 +13,7 @@ import android.net.Network
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
|
import androidx.core.os.ExecutorCompat
|
||||||
import be.mygod.vpnhotspot.App.Companion.app
|
import be.mygod.vpnhotspot.App.Companion.app
|
||||||
import be.mygod.vpnhotspot.root.RootManager
|
import be.mygod.vpnhotspot.root.RootManager
|
||||||
import be.mygod.vpnhotspot.root.StartTethering
|
import be.mygod.vpnhotspot.root.StartTethering
|
||||||
@@ -65,6 +66,10 @@ object TetheringManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private object InPlaceExecutor : Executor {
|
||||||
|
override fun execute(command: Runnable) = command.run()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use with {@link #getSystemService(String)} to retrieve a {@link android.net.TetheringManager}
|
* Use with {@link #getSystemService(String)} to retrieve a {@link android.net.TetheringManager}
|
||||||
* for managing tethering functions.
|
* for managing tethering functions.
|
||||||
@@ -314,7 +319,7 @@ object TetheringManager {
|
|||||||
fun startTethering(type: Int, showProvisioningUi: Boolean, callback: StartTetheringCallback,
|
fun startTethering(type: Int, showProvisioningUi: Boolean, callback: StartTetheringCallback,
|
||||||
handler: Handler? = null, cacheDir: File = app.deviceStorage.codeCacheDir) {
|
handler: Handler? = null, cacheDir: File = app.deviceStorage.codeCacheDir) {
|
||||||
if (Build.VERSION.SDK_INT >= 30) try {
|
if (Build.VERSION.SDK_INT >= 30) try {
|
||||||
val executor = handler.makeExecutor()
|
val executor = if (handler == null) InPlaceExecutor else ExecutorCompat.create(handler)
|
||||||
startTethering(type, true, showProvisioningUi,
|
startTethering(type, true, showProvisioningUi,
|
||||||
executor, proxy(object : StartTetheringCallback {
|
executor, proxy(object : StartTetheringCallback {
|
||||||
override fun onTetheringStarted() = callback.onTetheringStarted()
|
override fun onTetheringStarted() = callback.onTetheringStarted()
|
||||||
@@ -581,7 +586,7 @@ object TetheringManager {
|
|||||||
})
|
})
|
||||||
}.also { if (!computed) return }
|
}.also { if (!computed) return }
|
||||||
}
|
}
|
||||||
registerTetheringEventCallback(instance, executor ?: null.makeExecutor(), proxy)
|
registerTetheringEventCallback(instance, executor ?: InPlaceExecutor, proxy)
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Remove tethering event callback previously registered with
|
* Remove tethering event callback previously registered with
|
||||||
@@ -609,7 +614,7 @@ object TetheringManager {
|
|||||||
callback.onTetheredInterfacesChanged(intent.tetheredIfaces ?: return@broadcastReceiver)
|
callback.onTetheredInterfacesChanged(intent.tetheredIfaces ?: return@broadcastReceiver)
|
||||||
}.also { context.registerReceiver(it, IntentFilter(ACTION_TETHER_STATE_CHANGED)) }
|
}.also { context.registerReceiver(it, IntentFilter(ACTION_TETHER_STATE_CHANGED)) }
|
||||||
}
|
}
|
||||||
} else registerTetheringEventCallback(null.makeExecutor(), callback)
|
} else registerTetheringEventCallback(InPlaceExecutor, callback)
|
||||||
}
|
}
|
||||||
fun unregisterTetheringEventCallbackCompat(context: Context, callback: TetheringEventCallback) {
|
fun unregisterTetheringEventCallbackCompat(context: Context, callback: TetheringEventCallback) {
|
||||||
if (Build.VERSION.SDK_INT < 30) {
|
if (Build.VERSION.SDK_INT < 30) {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import android.net.InetAddresses
|
|||||||
import android.net.LinkProperties
|
import android.net.LinkProperties
|
||||||
import android.net.RouteInfo
|
import android.net.RouteInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Handler
|
|
||||||
import android.os.RemoteException
|
import android.os.RemoteException
|
||||||
import android.system.Os
|
import android.system.Os
|
||||||
import android.text.Spannable
|
import android.text.Spannable
|
||||||
@@ -36,7 +35,6 @@ import java.lang.reflect.Method
|
|||||||
import java.net.InetAddress
|
import java.net.InetAddress
|
||||||
import java.net.NetworkInterface
|
import java.net.NetworkInterface
|
||||||
import java.net.SocketException
|
import java.net.SocketException
|
||||||
import java.util.concurrent.Executor
|
|
||||||
|
|
||||||
tailrec fun Throwable.getRootCause(): Throwable {
|
tailrec fun Throwable.getRootCause(): Throwable {
|
||||||
if (this is InvocationTargetException || this is RemoteException) return (cause ?: return this).getRootCause()
|
if (this is InvocationTargetException || this is RemoteException) return (cause ?: return this).getRootCause()
|
||||||
@@ -60,8 +58,6 @@ fun Context.ensureReceiverUnregistered(receiver: BroadcastReceiver) {
|
|||||||
} catch (_: IllegalArgumentException) { }
|
} catch (_: IllegalArgumentException) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Handler?.makeExecutor() = Executor { if (this == null) it.run() else post(it) }
|
|
||||||
|
|
||||||
fun DialogFragment.showAllowingStateLoss(manager: FragmentManager, tag: String? = null) {
|
fun DialogFragment.showAllowingStateLoss(manager: FragmentManager, tag: String? = null) {
|
||||||
if (!manager.isStateSaved) show(manager, tag)
|
if (!manager.isStateSaved) show(manager, tag)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user