Refine permission handling

This commit is contained in:
Mygod
2020-06-29 02:39:04 +08:00
parent 78b7621845
commit 0f547e6750
2 changed files with 12 additions and 5 deletions

View File

@@ -23,8 +23,9 @@ import java.net.NetworkInterface
@TargetApi(26)
class LocalOnlyHotspotManager(private val parent: TetheringFragment) : Manager(), ServiceConnection {
companion object {
val permission = if (Build.VERSION.SDK_INT >= 29)
Manifest.permission.ACCESS_FINE_LOCATION else Manifest.permission.ACCESS_COARSE_LOCATION
val permission = if (Build.VERSION.SDK_INT >= 29) {
Manifest.permission.ACCESS_FINE_LOCATION
} else Manifest.permission.ACCESS_COARSE_LOCATION
}
class ViewHolder(val binding: ListitemInterfaceBinding) : RecyclerView.ViewHolder(binding.root),

View File

@@ -1,5 +1,6 @@
package be.mygod.vpnhotspot.manage
import android.Manifest
import android.annotation.TargetApi
import android.content.*
import android.os.Build
@@ -9,6 +10,7 @@ import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.appcompat.widget.Toolbar
@@ -118,11 +120,15 @@ class TetheringFragment : Fragment(), ServiceConnection, Toolbar.OnMenuItemClick
@RequiresApi(29)
val startRepeater = registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if (granted) requireContext().apply { startForegroundService(Intent(this, RepeaterService::class.java)) }
val activity = requireActivity()
if (granted) activity.startForegroundService(Intent(activity, RepeaterService::class.java))
else if (!activity.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
Toast.makeText(activity, "Repeater requires LOCATION permission", Toast.LENGTH_SHORT).show()
}
}
@RequiresApi(26)
val startLocalOnlyHotspot = registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if (granted) adapter.localOnlyHotspotManager.start(requireContext())
val startLocalOnlyHotspot = registerForActivityResult(ActivityResultContracts.RequestPermission()) {
adapter.localOnlyHotspotManager.start(requireContext())
}
var ifaceLookup: Map<String, NetworkInterface> = emptyMap()