Android VideoView可以';t在下载目录中打开视频文件(权限被拒绝)

Android VideoView可以';t在下载目录中打开视频文件(权限被拒绝),android,android-permissions,android-videoview,Android,Android Permissions,Android Videoview,我在模拟器中使用了Android 10 AVD。我将一个示例视频文件(“sample.mp4”)复制到模拟器中,然后尝试播放它。该活动有一个视频视图和一个按钮。我试图在单击按钮时播放视频,但由于“权限被拒绝”而失败。当然,我已经添加了“外部存储读取”权限,并在“应用程序信息”中手动启用它。但由于它不起作用,我还添加了requestPermissions(),并在运行时启用了权限。两者都不起作用 override fun onCreate(savedInstanceState: Bundle?)

我在模拟器中使用了Android 10 AVD。我将一个示例视频文件(“sample.mp4”)复制到模拟器中,然后尝试播放它。该活动有一个
视频视图
和一个
按钮
。我试图在单击按钮时播放视频,但由于“权限被拒绝”而失败。当然,我已经添加了“外部存储读取”权限,并在“应用程序信息”中手动启用它。但由于它不起作用,我还添加了
requestPermissions()
,并在运行时启用了权限。两者都不起作用

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    button.setOnClickListener {
        videoView.setVideoPath("/sdcard/Download/sample.mp4");
        videoView.start();
    }

    val permissions = arrayOf<String>(
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.READ_EXTERNAL_STORAGE
    )
    requestPermissions(permissions, 2222)
这并不是因为路径是错误的,因为当我给出一个假的路径时,错误是不同的

Unable to open content: /sdcard/Download/samplexxx.mp4
    java.io.FileNotFoundException: /sdcard/Download/samplexxx.mp4: open failed: ENOENT (No such file or directory)

通过
/storage/emulated/0/Download/sample.mp4
时,我遇到了相同的“权限被拒绝”错误。

请尝试使用此代码以获得访问权限

   if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
            // Explain to the user why we need to read the contacts
        }

        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);

        // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an
        // app-defined int constant that should be quite unique

        return;
    }ode here

请尝试此代码以获得访问权限

   if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
            // Explain to the user why we need to read the contacts
        }

        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);

        // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an
        // app-defined int constant that should be quite unique

        return;
    }ode here

我认为您发送的路径是不完整的文件系统路径,您需要有从文件系统内部/外部目录存储开始的路径。[检查文档{}根据链接页面中的红色文本,Android 8.0+不允许使用共享存储中的路径访问文件。您不能假设SD卡位于/sdcard,这会因设备而异。我认为您发送的路径是不完整的文件系统路径,您需要具有从文件系统内部/外部目录存储开始的路径。[检查文档{}根据链接页面中的红色文本,Android 8.0+不允许使用共享存储中的路径访问文件。您不能假设SD卡位于/SD卡,这将因设备而异。