【发布时间】:2023-02-08 18:19:08
【问题描述】:
这是功能:
public boolean checkPermissionREAD_EXTERNAL_STORAGE(
final Context context) {
int currentAPIVersion = Build.VERSION.SDK_INT;
if (currentAPIVersion >= android.os.Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(
(Activity) context,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
Toast.makeText(this, "test", Toast.LENGTH_LONG).show();
} else {
ActivityCompat
.requestPermissions(
(Activity) context,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
return false;
} else {
return true;
}
} else {
return true;
}
}
这是我得到的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: MyApp.App, PID: 10585
java.lang.ClassCastException: MyApp.App cannot be cast to android.app.Activity
at MyApp.utility.FileUpload.GenericFileUploader.checkPermissionREAD_EXTERNAL_STORAGE(GenericFileUploader.java:209)
需要未强制转换为 Activity 的函数来检查和/或授予文件访问权限。非常感谢(并且需要)一些见解。
【问题讨论】:
-
您已经将上下文作为参数传递,为什么要将它投射到函数中。尝试删除你的演员表
-
@MokhtarAbdelhalim:
requestPermissions()需要一个Activity而不仅仅是任何旧的上下文。 -
@MokhtarAbdelhalim,我实际上已经尝试过了,但是
ActivityCompat要求进一步Activity。因此,即使参数中有上下文,正文中也需要它。 @JoachimSauer,有什么办法可以解决?
标签: java android android-activity mobile-application