我如何创建一个单一的权限检查在我的安卓应用程序?



我正在编程一个通过蓝牙连接到设备的应用程序,但每次我想用BluetoothDevice做一些事情时,我必须插入这样的权限检查(Kotlin):

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.BLUETOOTH_CONNECT),
42
)
}

是否有一个解决方案与一个单一的权限检查在应用程序的开始?

谢谢!

我们必须检查权限授予,否则可能会导致应用程序崩溃。但我们可以在Kotlin中用非常方便的方法来实现。按照下面的步骤…

在你的MainActivity或Very first activity中,像下面这样请求蓝牙许可。

  1. 在Activity中创建Permission Callback .

    private val requestPermissionsLauncher =  registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
    if (permissions.all { it.value }) Toast.makeText(
    this,
    "Permission Granted",
    Toast.LENGTH_SHORT
    ).show()
    else Toast.makeText(this, "not accepted all the permissions", Toast.LENGTH_LONG).show()
    }
    
  2. 请求权限在onCreate活动方法

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    //your code
    requestPermissionsLauncher.launch(
    arrayOf(android.Manifest.permission.BLUETOOTH_CONNECT)
    ) //asking permission whatever we need to run app.
    }
    
  3. 创建kotlin扩展功能,以确保只运行在蓝牙权限是理所当然。

    fun <T> Context.runOnBluetoothPermission(block: () -> T) {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED) {
    block()
    } else {
    Toast.makeText(
    this,
    "Bluetooth permission need to work this.",
    Toast.LENGTH_SHORT
    ).show()
    }
    }
    
  4. 在任何需要的地方使用它的扩展功能

例子:

在<<p> strong> SecondActivity.kt
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//ui functions
//apicalls if any
//functions that only run on Bluetooth permission
runOnBluetoothPermission{
getAllBluetoothDevices()
}
}

private fun getAllBluetoothDevices(){
//your code to get all bluetooth devices.
}
}

用户可以在任何时候撤销权限,通过进入应用程序设置。当权限被撤销时,活动将被重新创建。这意味着您必须在onCreate之后和使用该权限之前至少检查一次(如果您仍然拥有该权限)。

TL;博士h5> 行,你的应用可能会崩溃。

最新更新