我正在做一个能够用相机拍照的Android应用程序并将它们发送给我们,即分发应用程序的公司。看似简单的任务,对吗? ; - )
文档描述了您应该如何做到这一点:https://developer.android.com/training/camera/photobasics.html
它也说
"注意:如果您将照片保存到提供的目录中 getExternalFilesDir(),媒体扫描程序无法访问文件 因为它们对您的应用是私密的。"
是的,我们很高兴我们可以私下存储,但我希望我们的用户可以在图库应用中查看他们的图片。如何将图片存储到公用文件夹?该文档没有描述这一点。
然后,该文档描述了我们应该使用返回FileProvider.getUriForFile
的{{1}}。一些content://-uri
游标机制应该给我一个文件系统的真实URL,但它似乎没有可靠的工作,我的上传课程不理解getContentResolver().query()
。我知道我们需要跨越包边界的安全限制,但是,嘿,我想要我刚写的数据!是否有一种简单可靠的方式来获取content://-uris
我的照片?
谢谢!
答案 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);
希望有所帮助:)