onRequestPermissionsResult 未在 AlertDialog 中调用 class
onRequestPermissionsResult doesn't get called in AlertDialog class
我有一个 class、ExportDialog、extends AlertDialog
和 implements ActivityCompat.OnRequestPermissionsResultCallback
。我通过调用
在 ExportDialog class 中请求许可
ActivityCompat.requestPermissions(getOwnerActivity(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
权限也包含在清单中。
但是,当调用 ActivityCompat.requestPermissions
时,onRequestPermissionsResult 不会随权限请求的结果一起调用。
在模拟器中测试时,我可以看到正在执行权限请求,并且我能够成功启用或拒绝权限请求。只是永远不会调用 onRequestPermissionResult 中的代码。
我已经检查了一些帖子,例如 这对我的问题没有帮助,因为我的 class 扩展了 AlertDialog。
请求权限的代码片段:
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getOwnerActivity(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
return false;
}
onRequestPermissionResult 的代码片段:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
exportCategory();
} else {
Toast.makeText(getContext(), "Export functionality can't be carried out.", Toast.LENGTH_LONG).show();
}
}
}
}
class 声明的代码片段(CustomDialog 扩展了 AlertDialog):
public class ExportDialog extends CustomDialog implements ActivityCompat.OnRequestPermissionsResultCallback { ... }
提前感谢您的帮助!
你不能把它放在警告对话框中。您必须将其移至创建对话框的 activity。
我不知道 exportCategory()
应该做什么,但也许你可以在你的对话框中将它设为静态 public 或将其移动到另一个单独的静态 class 然后从你的 activity.
of 如果该函数依赖于您的警报对话框对象,那么您需要在 activity 中保留对警报对话框的引用,然后使用该警报调用该函数 (exportCategory()
)对话框实例。
我有一个 class、ExportDialog、extends AlertDialog
和 implements ActivityCompat.OnRequestPermissionsResultCallback
。我通过调用
ActivityCompat.requestPermissions(getOwnerActivity(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
权限也包含在清单中。
但是,当调用 ActivityCompat.requestPermissions
时,onRequestPermissionsResult 不会随权限请求的结果一起调用。
在模拟器中测试时,我可以看到正在执行权限请求,并且我能够成功启用或拒绝权限请求。只是永远不会调用 onRequestPermissionResult 中的代码。
我已经检查了一些帖子,例如
请求权限的代码片段:
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getOwnerActivity(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
return false;
}
onRequestPermissionResult 的代码片段:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
exportCategory();
} else {
Toast.makeText(getContext(), "Export functionality can't be carried out.", Toast.LENGTH_LONG).show();
}
}
}
}
class 声明的代码片段(CustomDialog 扩展了 AlertDialog):
public class ExportDialog extends CustomDialog implements ActivityCompat.OnRequestPermissionsResultCallback { ... }
提前感谢您的帮助!
你不能把它放在警告对话框中。您必须将其移至创建对话框的 activity。
我不知道 exportCategory()
应该做什么,但也许你可以在你的对话框中将它设为静态 public 或将其移动到另一个单独的静态 class 然后从你的 activity.
of 如果该函数依赖于您的警报对话框对象,那么您需要在 activity 中保留对警报对话框的引用,然后使用该警报调用该函数 (exportCategory()
)对话框实例。