ContentResolver始终返回null

时间:2014-11-17 21:41:35

标签: android

我正在尝试在我的Android设备上获取本地文件的内容类型。我的代码是

File file = new File(uploadPath.replace("file://",""));
Uri uri = Uri.fromFile(file);
ContentResolver contentResolver = getApplicationContext().getContentResolver();
String type = contentResolver.getType(uri);

我的上传路径为file:///storage/emulated/0/DCIM/Camera/20141016_181148.jpg。但是,我总是将type视为空。这是为什么??

3 个答案:

答案 0 :(得分:2)

如果uri方案不是content://

,内容解析器将返回null

答案 1 :(得分:0)

获取文件类型,请查看:How to determine MIME type of file in android?

可能的空值的原因:

What causes Android's ContentResolver.query() to return null?

从我可以看到的uri可能是不正确的。

答案 2 :(得分:0)

如果您使用的是最新的编码标准,则在如何管理存储以及我们如何访问存储方面有很多changes。要回答您的问题,您必须将Uri uri = Uri.fromFile(file);替换为以下代码:

Java:

 Uri uri = FileProvider.getUriForFile(
                            context,
                            context.getPackageName() + ".provider",
                            file
                        );

科特琳:

val uri = FileProvider.getUriForFile(
                                context,
                                context.packageName + ".provider",
                                file
                            )

别忘了查看官方文档

我希望这会有所帮助!