Handle API changes

This commit is contained in:
Mygod
2019-03-20 11:53:04 +08:00
parent 841ee5ce9d
commit 005b5189f4
6 changed files with 13 additions and 10 deletions

View File

@@ -7,13 +7,13 @@ import android.content.res.Configuration
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.os.Build import android.os.Build
import android.preference.PreferenceManager
import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.core.provider.FontRequest import androidx.core.provider.FontRequest
import androidx.emoji.text.EmojiCompat import androidx.emoji.text.EmojiCompat
import androidx.emoji.text.FontRequestEmojiCompatConfig import androidx.emoji.text.FontRequestEmojiCompatConfig
import androidx.preference.PreferenceManager
import be.mygod.vpnhotspot.net.DhcpWorkaround import be.mygod.vpnhotspot.net.DhcpWorkaround
import be.mygod.vpnhotspot.room.AppDatabase import be.mygod.vpnhotspot.room.AppDatabase
import be.mygod.vpnhotspot.util.DeviceStorageApp import be.mygod.vpnhotspot.util.DeviceStorageApp
@@ -32,7 +32,8 @@ class App : Application() {
app = this app = this
if (Build.VERSION.SDK_INT >= 24) { if (Build.VERSION.SDK_INT >= 24) {
deviceStorage = DeviceStorageApp(this) deviceStorage = DeviceStorageApp(this)
deviceStorage.moveSharedPreferencesFrom(this, PreferenceManager.getDefaultSharedPreferencesName(this)) // alternative to PreferenceManager.getDefaultSharedPreferencesName(this)
deviceStorage.moveSharedPreferencesFrom(this, PreferenceManager(this).sharedPreferencesName)
deviceStorage.moveDatabaseFrom(this, AppDatabase.DB_NAME) deviceStorage.moveDatabaseFrom(this, AppDatabase.DB_NAME)
} else deviceStorage = this } else deviceStorage = this
DebugHelper.init() DebugHelper.init()
@@ -51,7 +52,7 @@ class App : Application() {
if (DhcpWorkaround.shouldEnable) DhcpWorkaround.enable(true) if (DhcpWorkaround.shouldEnable) DhcpWorkaround.enable(true)
} }
override fun onConfigurationChanged(newConfig: Configuration?) { override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig) super.onConfigurationChanged(newConfig)
ServiceNotification.updateNotificationChannels() ServiceNotification.updateNotificationChannels()
} }

View File

@@ -120,9 +120,9 @@ class RepeaterService : Service(), WifiP2pManager.ChannelListener, SharedPrefere
if (intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, 0) == if (intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, 0) ==
WifiP2pManager.WIFI_P2P_STATE_DISABLED) clean() // ignore P2P enabled WifiP2pManager.WIFI_P2P_STATE_DISABLED) clean() // ignore P2P enabled
WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION -> onP2pConnectionChanged( WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION -> onP2pConnectionChanged(
intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_INFO), intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_INFO)!!,
intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO), intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO),
intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP)) intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_GROUP)!!)
} }
} }
private val deviceListener = broadcastReceiver { _, intent -> private val deviceListener = broadcastReceiver { _, intent ->

View File

@@ -90,7 +90,7 @@ class TetheringService : IpNeighbourMonitoringService() {
if (start()) check(downstreams.put(iface, this) == null) else destroy() if (start()) check(downstreams.put(iface, this) == null) else destroy()
} }
} }
intent.getStringExtra(EXTRA_ADD_INTERFACE_MONITOR)?.let { iface -> intent.getStringExtra(EXTRA_ADD_INTERFACE_MONITOR)?.also { iface ->
val downstream = downstreams[iface] val downstream = downstreams[iface]
if (downstream == null) Downstream(this, iface, true).apply { if (downstream == null) Downstream(this, iface, true).apply {
start() start()
@@ -98,7 +98,7 @@ class TetheringService : IpNeighbourMonitoringService() {
downstreams[iface] = this downstreams[iface] = this
} else downstream.monitor = true } else downstream.monitor = true
} }
downstreams.remove(intent.getStringExtra(EXTRA_REMOVE_INTERFACE))?.destroy() intent.getStringExtra(EXTRA_REMOVE_INTERFACE)?.also { downstreams.remove(it)?.destroy() }
updateNotification() // call this first just in case we are shutting down immediately updateNotification() // call this first just in case we are shutting down immediately
onDownstreamsChangedLocked() onDownstreamsChangedLocked()
} else if (downstreams.isEmpty()) stopSelf(startId) } else if (downstreams.isEmpty()) stopSelf(startId)

View File

@@ -47,7 +47,7 @@ object MacLookup {
try { try {
val response = conn.inputStream.bufferedReader().readText() val response = conn.inputStream.bufferedReader().readText()
val obj = JSONObject(response).getJSONObject("result") val obj = JSONObject(response).getJSONObject("result")
obj.optString("error", null)?.also { throw UnexpectedError(mac, it) } obj.opt("error")?.also { throw UnexpectedError(mac, it.toString()) }
val company = obj.getString("company") val company = obj.getString("company")
val match = extractCountry(mac, response, obj) val match = extractCountry(mac, response, obj)
val result = if (match != null) { val result = if (match != null) {
@@ -71,7 +71,7 @@ object MacLookup {
} }
private fun extractCountry(mac: Long, response: String, obj: JSONObject): MatchResult? { private fun extractCountry(mac: Long, response: String, obj: JSONObject): MatchResult? {
obj.optString("country")?.let { countryCodeRegex.matchEntire(it) }?.also { return it } countryCodeRegex.matchEntire(obj.optString("country"))?.also { return it }
val address = obj.optString("address") val address = obj.optString("address")
if (address.isNullOrBlank()) return null if (address.isNullOrBlank()) return null
countryCodeRegex.find(address)?.also { return it } countryCodeRegex.find(address)?.also { return it }

View File

@@ -25,11 +25,13 @@ object WifiApManager {
private fun WifiManager.setWifiApEnabled(wifiConfig: WifiConfiguration?, enabled: Boolean) = private fun WifiManager.setWifiApEnabled(wifiConfig: WifiConfiguration?, enabled: Boolean) =
setWifiApEnabled.invoke(this, wifiConfig, enabled) as Boolean setWifiApEnabled.invoke(this, wifiConfig, enabled) as Boolean
@Suppress("DEPRECATION")
@Deprecated("Not usable since API 26, malfunctioning on API 25") @Deprecated("Not usable since API 26, malfunctioning on API 25")
fun start(wifiConfig: WifiConfiguration? = null) { fun start(wifiConfig: WifiConfiguration? = null) {
app.wifi.isWifiEnabled = false app.wifi.isWifiEnabled = false
app.wifi.setWifiApEnabled(wifiConfig, true) app.wifi.setWifiApEnabled(wifiConfig, true)
} }
@Suppress("DEPRECATION")
@Deprecated("Not usable since API 26") @Deprecated("Not usable since API 26")
fun stop() { fun stop() {
app.wifi.setWifiApEnabled(null, false) app.wifi.setWifiApEnabled(null, false)

View File

@@ -57,7 +57,7 @@ object SpanFormatter {
i = m.start() i = m.start()
val exprEnd = m.end() val exprEnd = m.end()
val argTerm = m.group(1) val argTerm = m.group(1)!!
val modTerm = m.group(2) val modTerm = m.group(2)
val typeTerm = m.group(3) val typeTerm = m.group(3)