android.media.action.IMAGE_CAPTURE无法保存图片问题求助
问题:Termux脚本调用相机拍照指定存储路径失败
:)
我正在编写一个Termux Bash脚本来管理现实生活中的消费记录。目前当程序检测到是杂货类消费时,会自动请求拍摄杂货小票的照片。
为了实现拍照功能,我尝试使用android.media.action.IMAGE_CAPTURE组件。通过ChatGPT了解到,可以传递参数-e output <URI>来指定图片存储路径。最初我传入文件URI时无法创建文件,尝试先创建空文件再让组件覆盖写入,成功了。
当时使用的命令如下:
am start -a android.media.action.IMAGE_CAPTURE -e output file:///data/data/com.termux/files/home/moneybook/test.png
不过这是我交互式测试时成功的,之后尝试复现却失败了,查看bash历史记录发现有大量内容丢失。
我尝试写入SD卡目录,同样失败:
cd /storage/emulated/0 touch test.png am start -a android.media.action.IMAGE_CAPTURE -e output 'file///storage/emulated/0/test.png'
查看文件内容为空。
听说Android出于安全考虑推荐使用Content URI而非文件URI,我尝试使用文件管理器miMix提供的Content URI:
am start -a android.media.action.IMAGE_CAPTURE -e output 'content://com.mixplorer.silver.file/525!/test.png'
同样没有效果,写入新文件test2也失败。
更新
@CommonsWare提示可能是权限问题,考虑到Android新版本限制直接写入主目录(/storage/emulated/0),我尝试写入相机默认有权限的/storage/emulated/0/DCIM/Camera目录,无论写入新文件还是覆盖现有文件均失败。
令我困惑的是,之前成功时曾收到Android的相机权限请求弹窗,且能直接写入Termux存储目录...
––––––
我不清楚问题所在,希望能得到相关分析和建议。我的设备是Android 11、MIUI 12系统。
感谢阅读 :)
内容的提问来源于stack exchange,提问作者Lucastegano X
相关产品推荐
相关产品推荐

