我试图通过意图选择视频文件并从视频中提取元数据。
但是,我收到了一些用户的错误报告,并报告了以下异常:
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();
}
}
为什么会出现异常以及如何解决?
答案 0 :(得分:0)
在最近的API版本中,此方法的一个问题是它需要清单权限,而且从错误消息中看并不总是很明显 - 请参阅此讨论:https://code.google.com/p/android/issues/detail?id=35794
如果这是问题,那么对于您的情况,我认为您的URI看起来像是本地文件,因此您需要文件读/写权限。如果是互联网网址,那么您需要互联网许可。