Android Can';在三星设备上找不到内容提供商

Android Can';在三星设备上找不到内容提供商,android,android-contentprovider,Android,Android Contentprovider,我对ContentProvider有一些问题。我创建了一个库,用于从gallery或其他地方获取图像。它工作良好,并返回图像列表的路径,但当我想获得每个图像应用程序抛出的URI时 由java.lang.IllegalArgumentException引起:未能找到包含/storage/0000-0000/TropicBeauty Austin/Screenshot_20170905-184459.jpg的配置根目录 这段代码中的问题 @Override public void onActivi

我对ContentProvider有一些问题。我创建了一个库,用于从gallery或其他地方获取图像。它工作良好,并返回图像列表的路径,但当我想获得每个图像应用程序抛出的URI时

由java.lang.IllegalArgumentException引起:未能找到包含/storage/0000-0000/TropicBeauty Austin/Screenshot_20170905-184459.jpg的配置根目录

这段代码中的问题

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    ArrayList<String> fullMediaPath = new ArrayList<>();
    if(resultCode == android.app.Activity.RESULT_OK && requestCode == Const.OPEN_ATTACH_PHOTO_REQUEST_CODE){
        ArrayList<String> photos = (ArrayList<String>) data.getSerializableExtra(GalleryActivity.PHOTOS);
        fullMediaPath.addAll(photos);
        if(photos != null && photos.size()>0) {
            try {
                for (String photo : photos) {
                    File file = new File(photo);
                    Uri path = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", file);
                    uriPhotos.add(path);
                }
@覆盖
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
ArrayList fullMediaPath=新的ArrayList();
if(resultCode==android.app.Activity.RESULT\u OK&&requestCode==Const.OPEN\u ATTACH\u PHOTO\u REQUEST\u CODE){
ArrayList photos=(ArrayList)data.getSerializableExtra(GalleryActivity.photos);
fullMediaPath.addAll(照片);
如果(照片!=null&&photos.size()>0){
试一试{
用于(字符串照片:照片){
文件=新文件(照片);
Uri路径=FileProvider.getUriForFile(上下文,BuildConfig.APPLICATION\u ID+“.provider”,文件);
添加(路径);
}
此异常仅发生在Android 7.0上的三星设备上,我无法重现此崩溃

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
    name="external_p"
    path="."/>
<files-path
    name="files_p"
    path="." />
<external-files-path
    name="ext_files"
    path="." />
<cache-path
    name="cache_p"
    path="." />
<external-cache-path
    name="external_cache_p"
    path="." />

也许我没有写正确的路径或名称,但在任何其他设备上都很好。三星有什么问题我不知道。也许有人可以帮我?提前谢谢

意图中设置数据的代码

    @Override
    public void didSelectPhotos(ArrayList<String> photos, ArrayList<String> captions) {
        Intent intent = new Intent();
        intent.putExtra(PHOTOS, photos);
        setResult(Activity.RESULT_OK, intent);
    }
@覆盖
公共照片(ArrayList照片、ArrayList标题){
意图=新意图();
意向书(照片、照片);
设置结果(Activity.RESULT_OK,intent);
}

我使用gallery lib

你从哪里获得照片的
数组/列表?@pskink查看我的编辑问题,因此gallery活动返回文件列表,而不是
Uri的列表
s?@pskink yes。我使用以下行创建Uri FileProvider.getUriForFile(上下文,BuildConfig.APPLICATION\u ID+“.provider”,file);@pskink例如,它是photo value/storage/emulated/0/test/email_2.png中的完整路径,这是路径值中的uricontent://com.mybubblzinc.mybubblz.provider/external_p/test/email_2.pngwhere 您是否从中获得了
photos
array/list?@pskink查看我的编辑问题,因此图库活动将返回文件列表,而不是
Uri列表ode>s?@pskink是的。我用这行文件provider.getUriForFile(context,BuildConfig.APPLICATION_ID+“.provider”,file)创建uri;@pskink例如,它是photo value/storage/simulated/0/test/email_2.png中的完整路径,这是路径值中的uricontent://com.mybubblzinc.mybubblz.provider/external_p/test/email_2.png