当前位置: 首页 > 知识库问答 >
问题:

EACCES(拒绝权限),即使在授予权限后也是如此

端木安国
2023-03-14

我有一个针对SDK28的Android应用程序,所以我有处理的权限。我检查是否设置了read_external_storage,但当Exoplayer尝试读取文件(我验证该文件确实存在)时,我看到

com.google.android.exoplayer2.upstream.filedatasource$filedatasourceException:java.io.fileNotfoundexception:/storage/emulated/0/dcim/camera/vid_20190610_200249.mp4:打开失败:EACCES(拒绝权限)。

player = ExoPlayerFactory.newSimpleInstance(this, DefaultTrackSelector())
    playerView.player = player
    player?.addListener(this)

    //TODO: Change this when we are given the embedded video
    val dataSource = DefaultDataSourceFactory(this, Util.getUserAgent(this, "Exoplayer"))
    var path: String = ""
    var mediaSource: ExtractorMediaSource

    if (passedUrl == PLAY_TUTORIAL) {
        path = "asset:///tutorial_video.mp4"
        mediaSource = ExtractorMediaSource.Factory(dataSource).createMediaSource(Uri.parse(path))
    } else {
        path = passedUrl

        val file = File(path)
        val uriPath = Uri.fromFile(file)

        Timber.d("Path is $uriPath and that file exists = ${file.exists()}")


        mediaSource = ExtractorMediaSource.Factory(dataSource).createMediaSource(uriPath)
    }

    //Setting this to 0 will keep the controls from being hidden otherwise it's in milliseconds
    playerView.controllerShowTimeoutMs = 1500

    player?.prepare(mediaSource)

当我运行代码时,我在日志中看到了以下内容:

2019-06-13 21:54:35.048 5774-5774/com.android.myapp D/ViewTutorialActivity: Path is file:///storage/emulated/0/DCIM/Camera/VID_20190610_200249.mp4 and that file exists = true

2019-06-13 21:54:35.076 5774-5846/com.android.myapp D/OpenGLRenderer: Setting buffer count to 3, min_undequeued 1, extraBuffers 0

2019-06-13 21:54:38.077 5774-5968/com.android.myapp E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.upstream.FileDataSource$FileDataSourceException: java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/VID_20190610_200249.mp4: open failed: EACCES (Permission denied)
    at com.google.android.exoplayer2.upstream.FileDataSource.open(FileDataSource.java:73)

知道吗?

共有1个答案

苏伟志
2023-03-14

好的,这是一个AndroidQ的东西。可以通过启用遗留支持来解决问题。同样的代码在以前的Android版本上运行得很好。

 类似资料:
  • 我分配一个角色权限来创建数据库。相同的角色被分配给登录用户,但是当我试图使用分配角色的登录用户创建新数据库时,我得到权限拒绝错误。 无法执行语句。权限拒绝,数据库主,所有者dbo。运行此命令需要以下权限:CREATE DATABASE。赛贝斯错误代码=10331严重级别=14,状态=3,事务状态=0第1行 我用15.5分和16分试了一下。我做错什么了吗?我们需要考虑其他参数吗?我经历了这次讨论 h

  • 我遇到一个例外,当我试图打开FileInputStream时,文件打开权限被拒绝。 这是stacktrace: 是的,我在清单中有权限:

  • 问题内容: 我运行 npm install lodash, 但它抛出 错误:EACCES:权限被拒绝 错误。我知道这是权限问题,但据我所知,本地安装节点模块不需要sudo权限。如果我使用sudo运行它,它将安装在〜/ node_modules文件夹中。 drwxrwxr-x 是现有文件夹的文件许可权。我不知道可能出了什么问题。 下面是错误消息。 问题答案: 使用 npm init 创建 packa

  • 在构建TargetSDKVersionV29时,我无法访问存储。 下面是我的分级配置: 请注意,已授予权限,并且在构建时,相同的设置工作良好。 下面是我的实现:

  • 我运行npm install lodash,但它抛出错误:EACCES:权限被拒绝错误。我知道这是权限问题,但据我所知,在本地安装节点模块不需要sudo权限。如果我用sudo运行它,它会安装在~/node\u modules文件夹中。drwxrwxr-x是现有文件夹的文件权限。我不知道可能出了什么问题。 下面是错误消息。

  • 我的清单里有这个: 这是我尝试创建和写入文件的地方(它在一个名为的文件中): 当我尝试创建文件时,会显示以下内容: 如您所见,它在此处打印,表示授予了权限,但紧接着出现了“权限被拒绝”错误。有没有办法解决这个问题? 编辑:在旁注上,当它说它试图保存到数据/用户/0/cs时。cscb07courseproject/files,是在项目中还是保存在我的计算机上?因为当我去我的终端做cd/data或cd