ローカルファイルを指定して他のアプリを起動するためのTips
PDFのオープンを含めて、ローカルファイルを起動するためのTips.
androidでは、特定のファイルを起動するためにmime typeを指定してやる必要があります。
その為、拡張子からmime typeを判別してやらなくてはならない。
そのmime typeを取得するために、「MimeTypeMap」を使用します。
さっきのを少し改変して、
//インテントを生成 Intent intent = new Intent(Intent.ACTION_VIEW); //開くファイル String data = "file:///mnt/sdcard/document.pdf"; //拡張子 String extention = MimeTypeMap.getFileExtensionFromUrl(filename); //mime type String mimetype =MimeTypeMap.getSingleton().getMimeTypeFromExtension(extention); //URLとmimetypeを取得 intent.setDataAndType(Uri.parse(data), mimetype); //別タスクで実行するためのおまじない。 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); // Start! context.startActivity(intent);
ここで増えたのが
String extention = MimeTypeMap.getFileExtensionFromUrl(filename); String mimetype =MimeTypeMap.getSingleton().getMimeTypeFromExtension(extention);
この2行。
MimeTypeMap.getFileExtensionFromUrl(String filename)
で、ファイル名から拡張子を取り出すします。
次に、
String mimetype =MimeTypeMap.getSingleton().getMimeTypeFromExtension(extention);
で、ファイル名から対応するmime-typeを取得します。
なお、リファレンスを見たところ、対応するアプリが入ってない場合にはnullが返るようです。