2012-04-17 40 views
0
String filename = Environment.getExternalStorageDirectory()+"/word.docx"; 
try{ 
    File file = new File(filename); 
    Uri path = Uri.fromFile(file); 
    Intent viewDoc = new Intent(Intent.ACTION_VIEW); 
     Log.i(TAG, "mime type "+URLConnection.guessContentTypeFromName(filename).toString()); 
    viewDoc.setDataAndType(path, URLConnection.guessContentTypeFromName(filename)); 

    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> apps = 
     pm.queryIntentActivities(viewDoc, PackageManager.MATCH_DEFAULT_ONLY); 

    if (apps.size() > 0){ 
     startActivity(viewDoc); 
    } 
}catch(Exception e){ 
    Log.i(TAG, "oh exception "+e.getMessage()); 
} 

這是我的代碼,我沒有得到Android 2.1中的mime類型,我在那個日誌中得到null。Android 2.1GuessContentTypeFromName不工作

雖然,我可以在Android 2.3.3中使用相同的代碼相同的應用程序。

回答

2

您需要將url傳遞給該函數。嘗試用「file://」作爲前綴:

更新:移動註釋以回答:您需要使用MimeTypeMap而不是URLConnectionguessContentTypeFromName。以this SO thread爲例

+0

我正在傳遞/sdcard/word.docx。好嗎? 或我傳遞文件名://sdcard/word.docx像這樣 – SkyWalker 2012-04-17 11:20:06

+0

不,那沒有奏效。 – SkyWalker 2012-04-17 11:24:05

+0

file:///sdcard/word.docx - 觀察三個'/'s:兩個用於文件協議,一個用於root訪問 – Attila 2012-04-17 11:25:05