FileNameMap是一个理解文件类型的类的方法返回的接口。例如,有一个具有getFileNameMap()方法的URLConnection类,它的使用方式如下所示。
private void requestIntent(Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
FileNameMap mime = URLConnection.getFileNameMap();
String mimeType = mime.getContentTypeFor(uri.getPath());
intent.setDataAndType(uri, mimeType);
try {
mActivity.startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(mActivity, OResource.string(mActivity, R.string.toast_no_activity_found_to_handle_file), Toast.LENGTH_LONG).show();
}
}
这个例子从here
所以,你通常不会孤立地使用FileNameMap。相反,您可以使用创建实现FileNameMap的对象的现有库类。如果你确实想实现这样的库,你需要写这样的代码(从URLConnection的来源获取)
public static synchronized FileNameMap More getFileNameMap() {
316 if ((fileNameMap == null) && !fileNameMapLoaded) {
317 fileNameMap = sun.net.www.MimeTable.loadTable();
318 fileNameMapLoaded = true;
319 }
320
321 return new FileNameMap() {
322 private FileNameMap map = fileNameMap;
323 public String getContentTypeFor(String fileName) {
324 return map.getContentTypeFor(fileName);
325 }
326 };
327 }
在这里您将看到实现创建一个匿名类实现该接口;你作为接口实现者的责任将是设法实现getContentTypeFor()方法。
如果你想要做的就是一个文件的MIME类型,那么你可以使用URLConnection的给你一个已经具有实施的对象,因此就使用在回答所示的方法来related question
它是如何重复的?我的问题涉及FileNameMap接口的用法,一般不会获取Mime类型的文件 – kjdkfjsdo8