java处理权限请求结果,而不对子类化活动和重写onRequestPermissionsResult方法
我正在从Cordova插件中基于非Activity
的类调用权限请求,并且我的应用程序的主要活动无法扩展,因此我无法实现/覆盖活动的onRequestPermissionsResult
方法。我需要在用户拥有授权权限后运行一个事件,如下面注释的伪代码lambda,但我不确定如何运行。我尝试过创建自己的Activity
子类并实现这个方法,但我得到了一个NullPointerException
class MyPlugin extends CordovaPlugin {
private void saveAndOpenFile() {
int permission =
ActivityCompat.checkSelfPermission(
cordova.getActivity(),
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
cordova.getActivity(),
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
); /*.then((int requestCode, String[] permissions, int[] grantedResults) -> {
// Do something crazy
});*/
}
}
}
# 1 楼答案
我建议在这个问题上遵循documentation
简而言之,您应该使用
cordova.hasPermission
检查我们是否拥有权限,然后使用cordova.requestPermission
,它“将调用活动并导致出现提示,请求权限。一旦用户拥有权限,结果必须使用onRequestPermissionResult
方法处理,每个插件都应该覆盖该方法。”所以,听起来好像CordovaPlugin
提供了一个空的onRequestPermissionResult
基实现,你的插件应该覆盖它当然,我想你可能可以通过调用
ActivityCompat.checkSelfPermission
和Acitivity.requestPermissions
而逃脱惩罚,但无论如何,你的插件都应该覆盖onRequestPermissionResult