Fix temp hotspot on Android Q beta

This commit is contained in:
Mygod
2019-03-14 19:15:33 +08:00
parent e81e66b84f
commit f75b522d82
2 changed files with 10 additions and 4 deletions

View File

@@ -39,6 +39,8 @@
<uses-permission android:name="android.permission.WRITE_SETTINGS" <uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions"/> tools:ignore="ProtectedPermissions"/>
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- Required since Android Q -->
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application <application
android:name=".App" android:name=".App"

View File

@@ -18,6 +18,7 @@ import android.text.style.TypefaceSpan
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.core.os.BuildCompat
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import be.mygod.vpnhotspot.DebugHelper import be.mygod.vpnhotspot.DebugHelper
@@ -32,6 +33,11 @@ import java.net.NetworkInterface
@TargetApi(26) @TargetApi(26)
class LocalOnlyHotspotManager(private val parent: TetheringFragment) : Manager(), ServiceConnection { class LocalOnlyHotspotManager(private val parent: TetheringFragment) : Manager(), ServiceConnection {
companion object {
val permission = if (BuildCompat.isAtLeastQ())
Manifest.permission.ACCESS_FINE_LOCATION else Manifest.permission.ACCESS_COARSE_LOCATION
}
class ViewHolder(val binding: ListitemInterfaceBinding) : RecyclerView.ViewHolder(binding.root), class ViewHolder(val binding: ListitemInterfaceBinding) : RecyclerView.ViewHolder(binding.root),
View.OnClickListener { View.OnClickListener {
init { init {
@@ -44,10 +50,8 @@ class LocalOnlyHotspotManager(private val parent: TetheringFragment) : Manager()
val binder = manager.binder val binder = manager.binder
if (binder?.iface != null) binder.stop() else { if (binder?.iface != null) binder.stop() else {
val context = manager.parent.requireContext() val context = manager.parent.requireContext()
if (context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != if (context.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
PackageManager.PERMISSION_GRANTED) { manager.parent.requestPermissions(arrayOf(permission), TetheringFragment.START_LOCAL_ONLY_HOTSPOT)
manager.parent.requestPermissions(arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION),
TetheringFragment.START_LOCAL_ONLY_HOTSPOT)
return return
} }
/** /**