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