选择视频的功能。
public void onDestination(){
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);
}
[输出应该是这样的]但它不能正常工作。(https://i.stack.imgur.com/bAsZu.png)
2条答案
按热度按时间yuvru6vn1#
我无法访问Karumi Dexter的文件或“READ_EXTERNAL_NAME”。它一直工作到SDK-32,但它不工作的33。
正如官方页面上提到的,Dexter library:
已不再积极开发。
这种情况已经发生了两年了。所以它可以与Sdk-32一起工作,但不能与Sdk-33一起工作,因为它不再被维护了。在这种情况下,我的建议是使用你自己的权限逻辑,就像Android官方文档中提到的那样。还请注意,有一个关于
READ_EXTERNAL_STORAGE
的说明说:**从API级别33开始,此权限无效。**如果您的应用访问其他应用的媒体文件,请改为请求以下一项或多项权限:READ_MEDIA_ITERA、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO。了解有关与媒体文件关联的存储权限的详细信息。
所以很可能这就是为什么你会有这种行为。
xjreopfe2#
对于使用
Intent.ACTION_GET_CONTENT
,您从未需要权限READ_EXTERNAL_STORAGE
。没有Android版本。
所以移除检查并启动Intent。