记录原因:在实现一个跳转拍视频的功能时候,因为写了如下代码,录制了后返回,结果发现私有目录cacheDir的文件一直为0k,仔细一想...这肯定是0k没得跑,因此记录一下这个乌龙。
val uri: Uri = Uri.fromFile(file) // 将路径转换为Uri对象
val intent = Intent(MediaStore.ACTION_VIDEO_CAPTURE) // 表示跳转至相机的录视频界面
intent.putExtra(
MediaStore.EXTRA_VIDEO_QUALITY,
1
) // MediaStore.EXTRA_VIDEO_QUALITY 表示录制视频的质量,从 0-1,越大表示质量越好,同时视频也越大
intent.putExtra(
MediaStore.EXTRA_OUTPUT,
uri
)
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 50000) // 设置视频录制的最长时间
startActivityForResult(intent, 123) // 跳转
上面这段代码当file 为APP私有目录cacheDir的时候,MediaStore.EXTRA_OUTPUT设置将不生效(这里是跳转到APP拍视频,当然拍照片也是一样的)
原因:显然...第三方应用(系统的拍照软件)没有root怎么可以访问APP的私有目录.....
如果非要调用第三方应用(系统的拍照软件)把视频/照片保存到私有目的怎么办?
解决方案:
1.不加MediaStore.EXTRA_OUTPUT (让系统相机存储在自己默认)或者设置一个公开的sdcard目录
2.回调的时候copy一份到私有目录