【发布时间】:2016-05-11 21:28:53
【问题描述】:
我正在尝试使用 MediaStore.ACTION_VIDEO_CAPTURE Intent 操作录制视频。
这将启动相机活动,我可以捕捉视频。问题是我没有权限读取返回的file:// uri:
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
String uriStr = intent.getData().toString();
/**
* uriString contains file:/storage/emulated/0/DCIM/Camera/VID_20160511_142405.mp4
*/
try {
getContentResolver().openInputStream(intent.getData()).close();
} catch (IOException e) {
}
}
我希望相机应用程序能够授予我临时权限,如 http://developer.android.com/guide/topics/providers/content-provider-basics.html#Intents 中所述。但它失败并出现权限错误:
java.io.FileNotFoundException: /storage/emulated/0/DCIM/Camera/VID_20160511_142806.mp4: open failed: EACCES (Permission denied)
有没有办法在没有READ_EXTERNAL_STORAGE 许可的情况下获取视频?
【问题讨论】:
-
你实际上想要
WRITE_EXTERNAL_STORAGE,而不是。它隐含包含READ_EXTERNAL_STORAGE。 -
其实我的应用只需要
READ_EXTERNAL_STORAGE。相机应用需要WRITE_EXTERNAL_STORAGE,但它已经有了。 -
Can I record a video所以,你想保存它。因此,您实际上需要WRITE_EXTERNAL_STORAGE。 -
不,我没有。只有相机应用程序需要保存它。此相机应用程序最有可能随系统一起提供并具有适当的权限。我的应用只需要读取结果。
-
我将
record更改为capture。所以它可能更像是一个不成文的东西——比如内存中的 BLOB。
标签: android android-intent android-permissions