选择视频功能。
私有无效ChooseVideo(){
Dexter.withContext(this)
.withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
.withListener(new PermissionListener() {
@Override public void onPermissionGranted(PermissionGrantedResponse response) {
Intent intent = new Intent( );
//new line added
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType( "video/*" );
intent.setAction( Intent.ACTION_GET_CONTENT );
startActivityForResult( intent,102 );
}
@Override public void onPermissionDenied(PermissionDeniedResponse response) {
}
@Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
token.continuePermissionRequest();
}
}).check();
}
//关于活动结果
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult( requestCode, resultCode, data );
if (requestCode==102 &resultCode==RESULT_OK);
videoUri=data.getData();
binding.VideoViewAVA.setVisibility(View.VISIBLE);
binding.VideoViewAVA.setVideoURI(videoUri);
Cursor mCursor = getApplicationContext().getContentResolver().query( videoUri,null,null,null,null );
int indexedName =mCursor.getColumnIndex( OpenableColumns.DISPLAY_NAME );
mCursor.moveToFirst();
songName = mCursor.getString(indexedName);
finalSongTitle = songName.replace(".mp4","")
.replace(".wmv","")
.replace(".webm","")
.replace(".mkv"," ");
mCursor.close();
binding.btnUploadVideo.setEnabled(true);
binding.vTitle.setText(finalSongTitle);
}
我无法访问该文件或 Karumi Dexter 的“READ_EXTERNAL_STORAGE”。它在 Sdk-32 之前都可以工作,但在 33 上就不起作用了。
正如官方页面上提到的,Dexter 库:
不再积极开发。
这种情况已经发生两年了。因此它可以与 Sdk-32 一起使用,但不能与 Sdk-33 一起使用,因为它不再被维护。在这种情况下,我的建议是使用您自己的有关权限的逻辑,正如官方 Android 文档中提到的那样。另请注意,那里有一条关于
READ_EXTERNAL_STORAGE
的注释,上面写着:
从 API 级别 33 开始,此权限无效。 如果您的应用访问其他应用的媒体文件,请改为请求以下一项或多项权限:READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO。了解有关与媒体文件关联的存储权限的更多信息。
所以很可能这就是您出现这种行为的原因。