隨著 3G 網路與智慧型手機的普及,已經越來越多人使用網路將資料傳送到手機查看。
但到底要如何在手機中開啟像 PDF, word 等檔案呢 ?
最簡單的方式... 就是交給系統判斷!由系統判斷這個檔案可以由那些 APP 開啟。
下面就來看看如何請系統幫我們列出可開啟檔案的 APP
但到底要如何在手機中開啟像 PDF, word 等檔案呢 ?
最簡單的方式... 就是交給系統判斷!由系統判斷這個檔案可以由那些 APP 開啟。
下面就來看看如何請系統幫我們列出可開啟檔案的 APP
實作
- 使用 endsWith() 取得檔案副檔名
- 設定 intent type ( type 請參照 MIME Type 列表 )
- startActivity 切換到開啟檔案的 app
※ 注意 ! 如果手機沒有可開啟檔案的程式,則會出現 ActivityNotFoundException
try {
String filePath = vSDCard.getCanonicalPath() + File.separator + "Download" + File.separator + vlowerFileName;
Intent intent = new Intent( Intent.ACTION_VIEW );
File f1 = new File(filePath);
if(f1.exists()){
if(vlowerFileName.endsWith("mpg") || vlowerFileName.endsWith("mp4")){
// 影片
intent.setDataAndType(Uri.fromFile(f1), "video/*");
}else if( vlowerFileName.endsWith("mp3") ){
// 音樂
intent.setDataAndType(Uri.fromFile(f1), "audio/*");
}else if( vlowerFileName.endsWith("bmp") || vlowerFileName.endsWith("gif") || vlowerFileName.endsWith("jpg") || vlowerFileName.endsWith("png")){
// 影像
intent.setDataAndType(Uri.fromFile(f1), "image/*");
}else if(vlowerFileName.endsWith("txt")){
// 文字檔
intent.setDataAndType (Uri.fromFile(f1), "text/plain");
}else if( vlowerFileName.endsWith("apk") ){
// Android APK
intent.setDataAndType(Uri.fromFile(f1), "application/vnd.android.package-archive");
}else if(vlowerFileName.endsWith("pdf")){
//pdf
intent.setDataAndType (Uri.fromFile(f1), "application/pdf");
}else if(vlowerFileName.endsWith("docx") || vlowerFileName.endsWith("doc")){
//doc
intent.setDataAndType(Uri.fromFile(f1), "application/msword");
}else if(vlowerFileName.endsWith("xlsx") || vlowerFileName.endsWith("xls")){
//xls
intent.setDataAndType (Uri.fromFile(f1), "application/vnd.ms-excel");
}else if(vlowerFileName.endsWith("pptx") || vlowerFileName.endsWith("ppt")){
//ppt
intent.setDataAndType (Uri.fromFile(f1), "application/vnd.ms-powerpoint");
}else{
// 其他
intent.setDataAndType( Uri.fromFile(f1), "application/*" );
}
//切換到開啟檔案的app,注意!如果手機沒有可開啟檔案的程式,則會出現ActivityNotFoundException
startActivity(intent);
}else{
Log.i("ruby", f1.getCanonicalPath() + " file isn't exists");
}
} catch (IOException e) {
Toast.makeText(MainActivity.this, "找不到檔案", Toast.LENGTH_SHORT).show();
} catch (ActivityNotFoundException e) {
//手機上沒有任何應用程式可開啟此檔
Toast.makeText(MainActivity.this, "沒有任何APP可以開啟此檔案", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
}
沒有留言:
張貼留言