我正在更新我的Android 6及更高版本的应用之一。该应用程序允许您将文件附加到其数据以提供更多信息。这可以是使用相机拍摄的图像,来自图库的图像,或来自文件系统的随机文件。我有一个ListView,显示附加的文件及其元数据,并onItemClick
我想向用户显示它们。我曾经用
Uri.fromFile(f)
但据我所知不再支持此功能。现在我的代码看起来像这样
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
doc = getItem(arg2);
File f = doc.getFile(context);
if (f.exists()) {
Intent myIntent = new Intent(Intent.ACTION_VIEW);
myIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
String mime = "";
try {
Uri uri = FileProvider.getUriForFile(context, android.support.v4.BuildConfig.APPLICATION_ID + ".provider", f);
mime = URLConnection.guessContentTypeFromStream(new FileInputStream(f));
if (mime == null) mime = URLConnection.guessContentTypeFromName(f.getName());
myIntent.setDataAndType(uri, mime);
context.startActivity(myIntent);
} catch (Exception e) {
e.printStackTrace();
}
} else {
//Error handling
}
}
这适用于手机存储上的文件。但由于FileProvider无法处理可安装存储上的文件,因此会抛出异常。我的问题是:如何在不使用FileProvider的情况下获取文件URI?