【问题标题】:Android: MediaMetadataRetriever caused "java.lang.RuntimeException: setDataSource failed: status = 0x80000000"Android:MediaMetadataRetriever 导致“java.lang.RuntimeException: setDataSource failed: status = 0x80000000”
【发布时间】:2017-09-04 15:46:42
【问题描述】:

我正在尝试通过意图选择视频文件并从视频中提取元数据。

但是,我收到了一些用户的错误报告并报告了以下异常:

Exception java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=12004, result=-1, data=Intent { dat=content://media/external/images/media/63141 flg=0x1 (has extras) }} to activity {my.app/my.app.VideoActivity}: 
java.lang.RuntimeException: setDataSource failed: status = 0x80000000

这里是抓取元数据的代码:

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    Uri uri = intent.getData();
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    try {
        retriever.setDataSource(this, uri); // error occurs here
    } catch (IllegalArgumentException e) {
        e.printStackTrace();           
    } catch (SecurityException e) {
        e.printStackTrace();           
    }
}

为什么会出现异常以及如何解决?

【问题讨论】:

  • 您在这方面取得了进展吗?调查同样的问题还没有成功,它只发生在我的测试中的 KK 设备上

标签: android video android-intent runtimeexception mediametadataretriever


【解决方案1】:

在最近的 API 版本中,此方法的一个问题是它需要清单权限,而且这并不总是从错误消息中显而易见 - 请参阅此讨论:https://code.google.com/p/android/issues/detail?id=35794

如果这是问题所在,那么对于您的情况,我认为您的 URI 看起来像是本地文件,因此您需要文件读/写权限。如果它是 Internet URL,那么您需要 Internet 权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多