2012-04-17 13 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://"のプレフィックスを付けてみてください

更新:URLConnectionguessContentTypeFromNameの代わりにMimeTypeMapを使用する必要があります。例についてはthis SO threadを参照

+0

私は/sdcard/word.docxを渡しています。それは大丈夫ですか? または私はこのようにファイル名://sdcard/word.docxを渡します – SkyWalker

+0

いいえ、それはうまくいきませんでした。 – SkyWalker

+0

file:///sdcard/word.docx - 3つの '/'を観察する:ファイルプロトコルの場合は2つ、ルートアクセスの場合は – Attila

関連する問題