gpt4 book ai didi

java - 在android中的单个类中处理权限

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:54 24 4
gpt4 key购买 nike

为了在 android M+ 中处理权限,我想编写一个类,即 PermissionHandler 类,来处理所有与权限相关的工作,这样我就可以轻松地在任何项目中使用相同的类,而无需通过只调用构造函数:

           new PermissionHandler(CallingActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, new PermissionHandler.PermissionGranted() {
@Override
public void onPermissionGranted() {
doWhatever();
}
});

我的 PermissionHandler 是:

public class PermissionHandler implements ActivityCompat.OnRequestPermissionsResultCallback{
.
.
.
public PermissionHandler(AppCompatActivity callingActivity, String permission, PermissionGranted permissionGranted) {
this.permission = permission;
this.permissionGranted = permissionGranted;
this.callingActivity= callingActivity;
askForPermission();

}

private void askForPermission() {

if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
showAlertDialog();
} else {
ActivityCompat.requestPermissions(callingActivity,permissionsArray, PERMISSION_REQUEST);
}
} else {
permissionGranted.onPermissionGranted();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
permissionGranted.onPermissionGranted();
} else {
onPermissionIsNotGranted();
}
break;
}
}
}

我的问题是 onRequestPermissionsResult 应该在调用 ActivityCompat.requestPermissions(callingActivity,permissionsArray, PERMISSION_REQUEST) 时被调用,但从未被调用。我发现这是由于 android 调用 callingActivity.onRequestPermissionsResult,它在 callingActivity 中不存在并被传递给 PermissionHandler。我也考虑过在运行时使用反射和代理来解决这个问题,但没有成功。

最佳答案

据我搜索,我发现它是 android 中的一个错误。你可以看到 live issue here . onRequestPermissionsResult() 将不会在调用它的 Activity 之后的任何其他类中调用。

有关更多详细信息,请参阅此问题:onRequestPermissionsResult not being called in dialog fragment .这个用户和你有同样的问题。

Creating a Common class for requesting permissions is a really good attempt but my friend, we need to find an alternative for handling onRequestPermissionsResult()

关于java - 在android中的单个类中处理权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37271562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com