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

android将照片存储到公共目录并访问其文件系统url,android,android-camera,Android,Android Camera,我正在开发一款android应用程序,它可以用相机拍照并将照片发送给我们,这是一家发布该应用程序的公司。看起来很容易,对吧?;-) 文档描述了您应该如何执行此操作: 它还说 “注意:如果您将照片保存到 getExternalFilesDir(),媒体扫描程序无法访问这些文件 因为它们对您的应用程序是私有的。” 是的,我们很高兴我们可以私下储存东西,但我希望我们的用户能在gallery应用程序中看到他们的图片。如何将图片存储到公用文件夹?医生没有描述 然后,文档描述我们应该使用FileProvid

我正在开发一款android应用程序,它可以用相机拍照并将照片发送给我们,这是一家发布该应用程序的公司。看起来很容易,对吧?;-)

文档描述了您应该如何执行此操作:

它还说

“注意:如果您将照片保存到 getExternalFilesDir(),媒体扫描程序无法访问这些文件 因为它们对您的应用程序是私有的。”

是的,我们很高兴我们可以私下储存东西,但我希望我们的用户能在gallery应用程序中看到他们的图片。如何将图片存储到公用文件夹?医生没有描述

然后,文档描述我们应该使用
FileProvider.getUriForFile
,它返回一个
content://-uri
。一些
getContentResolver().query()
cursor机制应该为我提供文件系统的真实url,但它似乎工作不可靠,我的upload类也不理解
content://-uris
。我知道我们需要跨越包边界的安全限制,但是嘿,我想要回我刚才写的数据!有没有一种简单可靠的方法来获取
file://-uri
我的照片

谢谢

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

引述:

通常,用户使用设备摄像头拍摄的任何照片都应保存在设备的公共外部存储器中,以便所有应用程序都可以访问这些照片。getExternalStoragePublicDirectory()提供了共享照片的正确目录,并带有directory\u PICTURES参数


话虽如此,你引用的具体段落是不正确的
getExternalFilesDir()
对于您的应用程序是唯一的,但对于您的应用程序不是私有的。存储在
getExternalFilesDir()
中的照片应该可以通过
MediaScannerConnection

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

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);
希望有帮助:)