我是否理解,在Android上,如果您想保存/保存使用相机拍摄的图像,您只能先在外部存储上创建图像?如果不存在外部存储,那么你运气不好?但假设存储确实存在,我可以在照片拍摄后随时将其移动到我想要的任何地方(包括私人内部存储)?
答案 0 :(得分:1)
这取决于“你用相机拍摄的图像”的含义。
如果您直接使用相机API(例如android.hardware.Camera
),或者您的应用中使用直接使用相机API的库,您应该可以将图像存储在internal storage上问题。
如果您尝试使用ACTION_IMAGE_CAPTURE
,you are at the mercy of whatever third-party camera app handles the request。一种方法是仅使用普通ACTION_IMAGE_CAPTURE
Intent
来请求缩略图,但图像将是缩略图大小的。但是,您通过结果Bitmap
上的额外内容获得Intent
,并且可以将其写入内部存储空间。
欢迎您使用EXTRA_OUTPUT
和content:
Uri
,指向应用中的ContentProvider
。理想情况下,这是有效的,您的ContentProvider
将获取图像并将其保存到内部存储。我会假设一些相机应用程序可以正确处理这个问题。但是,我也希望:
某些相机应用无法识别content:
方案,try to use the path as a file和崩溃
某些相机应用无法识别content:
方案,try to use the path as a file,失败,捕获异常并忽略您的EXTRA_OUTPUT
有些相机应用会忽略EXTRA_OUTPUT
某些相机应用在其ACTION_IMAGE_CAPTURE
处理中有其他错误会干扰您的应用
ACTION_IMAGE_CAPTURE
本质上是不可靠的。它很容易尝试,但由于相机应用程序的错误,它不会100%的时间工作。只有当您能够告诉用户¯\_(ツ)_/¯
何时不起作用时才使用它。
如果不存在外部存储,那么你运气不好?
如果用户没有external storage,则他们的 更多问题比您的应用无法正常工作。
但假设存储确实存在,我可以在照片拍摄后随时将其移动到我想要的任何地方(包括私人内部存储)?
“永远”是关于ACTION_IMAGE_CAPTURE
的强烈声明。假设 if 你得到一张保存在外部存储器上的图片,如果你有权使用外部存储器,那么<em>然后就可以将它移到内部存储器了。 / p>