firebase 我无法访问Karumi Dexter的文件或“READ_EXTERNAL_NAME”,它是工作,直到Sdk-32正常,但它不工作的33

fjaof16o  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(125)

选择视频的功能。
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

yuvru6vn

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。了解有关与媒体文件关联的存储权限的详细信息。

所以很可能这就是为什么你会有这种行为。

xjreopfe

xjreopfe2#

对于使用Intent.ACTION_GET_CONTENT,您从未需要权限READ_EXTERNAL_STORAGE
没有Android版本。
所以移除检查并启动Intent。

相关问题