android将照片存储到公共目录并访问其文件系统URL

时间:2017-03-23 20:55:01

标签: android android-camera

我正在做一个能够用相机拍照的Android应用程序并将它们发送给我们,即分发应用程序的公司。看似简单的任务,对吗? ; - )

文档描述了您应该如何做到这一点:https://developer.android.com/training/camera/photobasics.html

它也说

  

"注意:如果您将照片保存到提供的目录中   getExternalFilesDir(),媒体扫描程序无法访问文件   因为它们对您的应用是私密的。"

是的,我们很高兴我们可以私下存储,但我希望我们的用户可以在图库应用中查看他们的图片。如何将图片存储到公用文件夹?该文档没有描述这一点。

然后,该文档描述了我们应该使用返回FileProvider.getUriForFile的{​​{1}}。一些content://-uri游标机制应该给我一个文件系统的真实URL,但它似乎没有可靠的工作,我的上传课程不理解getContentResolver().query()。我知道我们需要跨越包边界的安全限制,但是,嘿,我想要我刚写的数据!是否有一种简单可靠的方式来获取content://-uris我的照片?

谢谢!

2 个答案:

答案 0 :(得分:0)

  

如何将图片存储到公用文件夹?

引用the documentation that you linked to

  

通常,用户使用设备相机拍摄的任何照片都应保存在公共外部存储设备中,以便所有应用都可以访问这些照片。共享照片的正确目录由getExternalStoragePublicDirectory()提供,带有DIRECTORY_PICTURES参数。

话虽如此,你引用的具体段落是不正确的。您的应用getExternalFilesDir() 唯一,但您的应用不是私有。存储在getExternalFilesDir()中的照片应该有资格通过MediaScannerConnection进行索引。

答案 1 :(得分:0)

您可以在拍摄照片后指定输出路径。

File newfile = new File("HERE IS YOUR OUTPUT PATH");
Uri outputFileUri = Uri.fromFile(newfile);

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);

希望有所帮助:)