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