我正在做蓝牙低功耗Android应用程序,我不想看到这样的SecurityException:Security Exception shows
看起来处理问题(警告?)的最简单方法是添加
@SuppressLint("MissingPermission")
第二个选择是添加检查权限EACH语句(方法),这可能会在Android Studio中使用帮助上下文操作(又称快速修复)发生SecurityException
例如:
发件人
bluetoothGatt?.discoverServices()
至
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.BLUETOOTH_CONNECT
) != PackageManager.PERMISSION_GRANTED
) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return
}
Log.i(TAG, "Attempting to start service discovery:"+
bluetoothGatt?.discoverServices() )
}
但看起来不太对劲我觉得。
因此,我想创建一个通用的try-catch函数,用于处理不同方法沿着的相同SecurityException:
bluetoothGatt?.discoverServices()
bluetoothGatt?.disconnect()
bluetoothAdapter?.disable()
ScanResult.device.name
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
这些方法来自不同的类,生成不同的返回值,但具有相同的SecurityException。
我认为,如果有适当的函数来处理SecurityException,那么代码重复将降到最低,代码将可以再生。
我怎样才能使函数处理沿着不同的方法导致相同的异常?如:
fun foo(m : differentMethods) : differentReturnValue{
try{
return m(bar)
} catch(e: SecurityException){
e.printStackTrace()
}
}
我试着做一个函数,为处理异常的函数获取参数并返回值,但我不知道如何做。
1条答案
按热度按时间o7jaxewo1#
您可以使用线程.setDefaultUncaughtExceptionHandler
访问此处了解更多详情:Using Global Exception Handling on android