繁体   English   中英

即使在获得许可后,EACCES(权限被拒绝)

[英]EACCES (Permission denied) even after giving permission

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

com.google.android.exoplayer2.upstream.FileDataSource $ FileDataSourceException:java.io.FileNotFoundException:/storage/emulated/0/DCIM/Camera/VID_20190610_200249.mp4:open failed:EACCES(Permission denied)。

我可以玩一个资产(文件烘焙到应用程序)就好了,也可以从互联网上播放。 由于某种原因,我无法播放存储在我的... DCIM / Camera目录中的本地视频。 任何人都可以告诉我,我做错了吗? 我的代码看起来像这样:

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)

任何想法?

好的,这是Android Q的事情。 通过启用传统支持,可以解决此问题。 相同的代码适用于以前的Android版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM