【发布时间】:2018-04-28 01:48:23
【问题描述】:
所以我正在开发一个应用程序,我正在拍摄照片并尝试将其保存到应用程序的内部存储中。我遇到了文件提供程序的问题。我看过很多关于堆栈溢出的问题,但如果可能的话,我想得到更详细的解释。
我也跟着谷歌的例子,它给了我以下错误。 https://developer.android.com/training/camera/photobasics
Failed to find configured root that contains /storage/emulated/0/Android/data/com.myapp.debug/files/Pictures/JPEG_20180427_095752_2090822261.jpg
这是我在遵循 Google 示例时所拥有的代码。
<provider
android:name=".application.blinkupregistration.postworkphotos.PostWorkPhotosFileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
在我的代码中。
Uri photoURI = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", photoFile);
对于上述两个,我还尝试将 com.myapp.provider 硬编码到 authority 和 getUriForFile 方法中。还为 getUriForFile 方法做了 getpackageName()。但这些并没有太大变化。我认为主要问题是路径。
使用谷歌的例子尝试了以下路径,
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="post_work_photos" path="Android/data/${applicationId}/files/Pictures" />
</paths>
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="post_work_photos" path="Android/data/com.myapp/files/Pictures" />
</paths>
每当我将我的 paths.xml 更改为以下内容时,我都会让它工作。
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="post_work_photos" path="." />
</paths>
但我不明白为什么它适用于句号。我也不知道这是否正确,这是我主要关心的问题。
如果有人可以帮助我,那就太好了。谢谢。
【问题讨论】:
-
Android 路径不是以正斜杠开头的吗?
/Android/ -
@MarcosVasconcelos 尝试确定,但这不是问题。谢谢
-
@Hamdroid 将其保存到公共目录。我想将其保存到应用存储中。
-
@huey77 请看下面我的回答。
标签: android android-camera android-fileprovider android-storage