我无法访问该文件或 Karumi Dexter 的“READ_EXTERNAL_STORAGE”。它在 Sdk-32 之前都可以正常工作,但在 33 上就无法工作

问题描述 投票:0回答:1

选择视频功能。

私有无效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);

}

[输出应该是这样的] 但它无法正常工作。 (https://i.stack.imgur.com/bAsZu.png)

java android firebase google-cloud-platform firebase-storage
1个回答
0
投票

我无法访问该文件或 Karumi Dexter 的“READ_EXTERNAL_STORAGE”。它在 Sdk-32 之前都可以工作,但在 33 上就不起作用了。

正如官方页面上提到的,Dexter 库

不再积极开发。

这种情况已经发生两年了。因此它可以与 Sdk-32 一起使用,但不能与 Sdk-33 一起使用,因为它不再被维护。在这种情况下,我的建议是使用您自己的有关权限的逻辑,正如官方 Android 文档中提到的那样。另请注意,那里有一条关于

READ_EXTERNAL_STORAGE
的注释,上面写着:

从 API 级别 33 开始,此权限无效。 如果您的应用访问其他应用的媒体文件,请改为请求以下一项或多项权限:READ_MEDIA_IMAGESREAD_MEDIA_VIDEOREAD_MEDIA_AUDIO。了解有关与媒体文件关联的存储权限的更多信息。

所以很可能这就是您出现这种行为的原因。

© www.soinside.com 2019 - 2024. All rights reserved.