无法在三星设备上获取内容提供商

时间:2017-09-15 07:44:21

标签: android android-contentprovider

我对ContentProvider有些问题。我创建了一个用于从图库或其他东西获取图像的库。它运行良好并返回图像列表的路径,但是当我想为每个图像应用程序获取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);
                }

此异常仅在Android 7.0上的三星设备上发生,我无法重现此崩溃。我的provider_path.xml

<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);
    }

我使用this图库lib

0 个答案:

没有答案