在不继承 Activity 和覆盖 onRequestPermissionsResult 方法的情况下处理权限请求结果
Handle Permissions Request Result Without Subclassing Activity and Overriding onRequestPermissionsResult Method
我正在从 Cordova 插件中的非 Activity
基于 class 调用权限请求,我的应用程序的主要 activity 无法扩展,所以我不能 implement/overrideonRequestPermissionsResult
方法activity。在用户获得授权权限后,我需要 运行 一个事件,例如下面评论的伪代码 lambda,但我不确定如何。我尝试创建自己的 Activity
subclass 并实施此方法,但我得到了 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
});*/
}
}
}
我建议在这方面遵循 documentation。
简而言之,您似乎应该使用 cordova.hasPermission
检查我们是否有权限,然后使用 cordova.requestPermission
,这将调用 activity 并导致出现提示, 请求许可。一旦用户获得许可,结果必须使用 onRequestPermissionResult
方法处理,每个插件都应覆盖该方法。”所以,听起来 CordovaPlugin
提供了一个空的 onRequestPermissionResult
基础实现,你的插件应该覆盖它。
当然,我想您可以调用 ActivityCompat.checkSelfPermission
和 Acitivity.requestPermissions
,但无论哪种方式,您的插件都应该覆盖 onRequestPermissionResult
.
class MyPlugin extends CordovaPlugin {
private void saveAndOpenFile() {
/* check permissions
...
*/
}
@Override
public void onRequestPermissionResult(int requestCode, String[] permissions,
int[] grantResults) throws JSONException {
/* check permission granted and proceed accordingly */
}
}
我正在从 Cordova 插件中的非 Activity
基于 class 调用权限请求,我的应用程序的主要 activity 无法扩展,所以我不能 implement/overrideonRequestPermissionsResult
方法activity。在用户获得授权权限后,我需要 运行 一个事件,例如下面评论的伪代码 lambda,但我不确定如何。我尝试创建自己的 Activity
subclass 并实施此方法,但我得到了 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
});*/
}
}
}
我建议在这方面遵循 documentation。
简而言之,您似乎应该使用 cordova.hasPermission
检查我们是否有权限,然后使用 cordova.requestPermission
,这将调用 activity 并导致出现提示, 请求许可。一旦用户获得许可,结果必须使用 onRequestPermissionResult
方法处理,每个插件都应覆盖该方法。”所以,听起来 CordovaPlugin
提供了一个空的 onRequestPermissionResult
基础实现,你的插件应该覆盖它。
当然,我想您可以调用 ActivityCompat.checkSelfPermission
和 Acitivity.requestPermissions
,但无论哪种方式,您的插件都应该覆盖 onRequestPermissionResult
.
class MyPlugin extends CordovaPlugin {
private void saveAndOpenFile() {
/* check permissions
...
*/
}
@Override
public void onRequestPermissionResult(int requestCode, String[] permissions,
int[] grantResults) throws JSONException {
/* check permission granted and proceed accordingly */
}
}