1. 程式人生 > >android 開啟各種檔案 intent.setDataAndType

android 開啟各種檔案 intent.setDataAndType

 Java程式碼 /**

  * 開啟檔案

  * @param file

  */

  private void openFile(File file){

  Intent intent = new Intent();

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  //設定intent的Action屬性

  intent.setAction(Intent.ACTION_VIEW);

  //獲取檔案file的MIME型別

  String type = getMIMEType(file);

  //設定intent的data和Type屬性。

  intent.setDataAndType(/*uri*/Uri.fromFile(file), type);

  //跳轉

  startActivity(intent); //這裡最好try一下,有可能會報錯。 //比如說你的MIME型別是開啟郵箱,但是你手機裡面沒裝郵箱客戶端,就會報錯。

  }

  /**

  * 根據檔案字尾名獲得對應的MIME型別。

  * @param file

  */

  private String getMIMEType(File file) {

  String type="*/*";

  String fName = file.getName();

  //獲取字尾名前的分隔符"."在fName中的位置。

  int dotIndex = fName.lastIndexOf(".");

  if(dotIndex < 0){

  return type;

  }

  /* 獲取檔案的字尾名*/

  String end=fName.substring(dotIndex,fName.length()).toLowerCase();

  if(end=="")return type;

  //在MIME和檔案型別的匹配表中找到對應的MIME型別。

  for(int i=0;i if(end.equals(MIME_MapTable[i][0]))

  type = MIME_MapTable[i][1];

  }

  return type;

  }

  MIME_MapTable是所有檔案的字尾名所對應的MIME型別的一個String陣列:

  Java程式碼 private final String[][] MIME_MapTable={

  //{字尾名,MIME型別}

  {".3gp", "video/3gpp"},

  {".apk", "application/vnd.android.package-archive"},

  {".asf", "video/x-ms-asf"},

  {".avi", "video/x-msvideo"},

  {".bin", "application/octet-stream"},

  {".bmp", "image/bmp"},

  {".c", "text/plain"},

  {".class", "application/octet-stream"},

  {".conf", "text/plain"},

  {".cpp", "text/plain"},

  {".doc", "application/msword"},

  {".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},

  {".xls", "application/vnd.ms-excel"},

  {".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},

  {".exe", "application/octet-stream"},

  {".gif", "image/gif"},

  {".gtar", "application/x-gtar"},

  {".gz", "application/x-gzip"},

  {".h", "text/plain"},

  {".htm", "text/html"},

  {".html", "text/html"},

  {".jar", "application/java-archive"},

  {".java", "text/plain"},

  {".jpeg", "image/jpeg"},

  {".jpg", "image/jpeg"},

  {".js", "application/x-javascript"},

  {".log", "text/plain"},

  {".m3u", "audio/x-mpegurl"},

  {".m4a", "audio/mp4a-latm"},

  {".m4b", "audio/mp4a-latm"},

  {".m4p", "audio/mp4a-latm"},

  {".m4u", "video/vnd.mpegurl"},

  {".m4v", "video/x-m4v"},

  {".mov", "video/quicktime"},

  {".mp2", "audio/x-mpeg"},

  {".mp3", "audio/x-mpeg"},

  {".mp4", "video/mp4"},

  {".mpc", "application/vnd.mpohun.certificate"},

  {".mpe", "video/mpeg"},

  {".mpeg", "video/mpeg"},

  {".mpg", "video/mpeg"},

  {".mpg4", "video/mp4"},

  {".mpga", "audio/mpeg"},

  {".msg", "application/vnd.ms-outlook"},

  {".ogg", "audio/ogg"},

  {".pdf", "application/pdf"},

  {".png", "image/png"},

  {".pps", "application/vnd.ms-powerpoint"},

  {".ppt", "application/vnd.ms-powerpoint"},

  {".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},

  {".prop", "text/plain"},

  {".rc", "text/plain"},

  {".rmvb", "audio/x-pn-realaudio"},

  {".rtf", "application/rtf"},

  {".sh", "text/plain"},

  {".tar", "application/x-tar"},

  {".tgz", "application/x-compressed"},

  {".txt", "text/plain"},

  {".wav", "audio/x-wav"},

  {".wma", "audio/x-ms-wma"},

  {".wmv", "audio/x-ms-wmv"},

  {".wps", "application/vnd.ms-works"},

  {".xml", "text/plain"},

  {".z", "application/x-compress"},

  {".zip", "application/x-zip-compressed"},

  {"", "*/*"}

  };

  這個MIME型別可能不完善待後續

  1. Intent open a picture file public:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  Uriuri=Uri.fromFile(new

  File("/mnt/sdcard/images/001041580.jpg"));

  intent.setDataAndType(uri,"image/*");

  this.startActivity(intent);

  2. Intent to open a PDF file:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  Uriuri=Uri.fromFile(new

  File("file:///android_asset/helphelp.pdf"));

  intent.setDataAndType(uri,"application/pdf");

  this.startActivity(intent);

  3. Intent to open a text file:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  if(paramBoolean)

  {

  Uriuri1=Uri.parse(param);

  intent.setDataAndType(URI1,"text/plain");

  }

  else

  {

  Uriuri=Uri.fromFile(newFile("/mnt/sdcard/hello.txt"));

  intent.setDataAndType(URI2,"text/plain");

  }

  this.startActivity(intent);

  4. Intent to open the audio file:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

  intent.putExtra("oneshot",0);

  intent.putExtra("configchange",0);

  Uriuri=Uri.fromFile(newFile("/mnt/sdcard/ren.mp3"));

  intent.setDataAndType(uri,"audio/*");

  this.startActivity(intent);

  5. Intent to open the video file:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

  intent.putExtra("oneshot",0);

  intent.putExtra("configchange",0);

  Uriuri=Uri.fromFile(newFile("/mnt/sdcard/ice.avi"));

  intent.setDataAndType(uri,"video/*");

  this.startActivity(intent);

  6. Intent to open the CHM file:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  Uriuri=Uri.fromFile(newFile("/mnt/sdcard/ice.chm"));

  intent.setDataAndType(uri,"application/x-chm");

  this.startActivity(intent);

  7. Intent to open a Word document:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  Uriuri=Uri.fromFile(newFile("/system/etc/help.doc"));

  intent.setDataAndType(uri,"application/msword");

  this.startActivity(intent);

  8. Android Excel intent:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  Uriuri=Uri.fromFile(newFile("/mnt/sdcard/Book1.xls"));

  intent.setDataAndType(uri,"application/vnd.ms-excel");

  this.startActivity(intent);

  9. Intent to open the PPT file:

  Java程式碼

收藏程式碼

  Intentintent=newIntent("android.intent.action.VIEW");

  intent.addCategory("android.intent.category.DEFAULT");

  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  Uriuri=Uri.fromFile(new

  File("/mnt/sdcard/download/Android_PPT.ppt"));

  intent.setDataAndType(uri,"application/vnd.ms-powerpoint");

  this.startActivity(intent);

  10. Display Html page::

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("http://www.google.com");

  Intentintent=newIntent(Intent.ACTION_VIEW,uri);

  this.startActivity(intent);

  11. Show map:

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("geo:38.899533,-77.036476");

  Intentintent=newIntent(Intent.Action_VIEW,uri);

  this.startActivity(intent);

  12. Call the dialer:

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("tel:xxxxxx");

  Intentintent=newIntent(Intent.ACTION_DIAL,uri);

  this.startActivity(intent);

  13. Call :

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("tel:xxxxxx");

  Intentit=newIntent(Intent.ACTION_CALL,uri);

  this.startActivity(intent);

  /*permission:

  */

  14. Call to send text messages of the program :

  Java程式碼

收藏程式碼

  Intentintent=newIntent(Intent.ACTION_VIEW);

  intent.putExtra("sms_body","TheSMStext");

  intent.setType("vnd.android-dir/mms-sms");

  this.startActivity(intent);

  15. Send SMS :

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("smsto:0800000123");

  Intentintent=newIntent(Intent.ACTION_SENDTO,uri);

  intent.putExtra("sms_body","TheSMStext");

  this.startActivity(intent);

  16. Send MMS :

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("content://media/external/images/media/23");

  Intentintent=newIntent(Intent.ACTION_SEND);

  intent.putExtra("sms_body","sometext");

  intent.putExtra(Intent.EXTRA_STREAM,uri);

  intent.setType("image/png");

  this.startActivity(intent);

  17. Send an Email :

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("mailto:[email protected]");

  Intentintent=newIntent(Intent.ACTION_SENDTO,uri);

  this.startActivity(intent);

  18. Send an Email with body :

  Java程式碼

收藏程式碼

  Intentintent=newIntent(Intent.ACTION_SEND);

  intent.putExtra(Intent.EXTRA_EMAIL,"[email protected]");

  intent.putExtra(Intent.EXTRA_TEXT,"Theemailbodytext");

  intent.setType("text/plain");

  this.startActivity(

  Intent.createChooser(intent,"ChooseEmailClient"));

  19. Send an Email with body,to,cc :

  Java程式碼

收藏程式碼

  Intentintent=newIntent(Intent.ACTION_SEND);

  String[]tos={"[email protected]"};

  String[]ccs={"[email protected]"};

  intent.putExtra(Intent.EXTRA_EMAIL,tos);

  intent.putExtra(Intent.EXTRA_CC,ccs);

  intent.putExtra(Intent.EXTRA_TEXT,"Theemailbodytext");

  intent.putExtra(Intent.EXTRA_SUBJECT,"Theemailsubjecttext");

  intent.setType("message/rfc822");

  this.startActivity(

  Intent.createChooser(intent,"ChooseEmailClient"));

  20. Send an Email with attachments :

  Java程式碼

收藏程式碼

  Intentintent=newIntent(Intent.ACTION_SEND);

  intent.putExtra(Intent.EXTRA_SUBJECT,"Theemailsubjecttext");

  intent.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3");

  sendIntent.setType("audio/mp3");

  this.startActivity(

  Intent.createChooser(intent,"ChooseEmailClient"));

  21. Uninstall the program :

  Java程式碼

收藏程式碼

  Uriuri=Uri.fromParts("package",strPackageName,null);

  Intentintent=newIntent(Intent.ACTION_DELETE,uri);

  this.startActivity(

  Intent.createChooser(intent,"ChooseEmailClient"));

  22. Install the apk :

  Java程式碼

收藏程式碼

  UriinstallUri=Uri.fromParts("package","xxx",null);

  returnIt=newIntent(Intent.ACTION_PACKAGE_ADDED,installUri);

  this.startActivity(returnIt);

  23. Search applications :

  Java程式碼

收藏程式碼

  Uriuri=Uri.parse("market://search?Q=pname:pkg_name");

  Intentintent=newIntent(Intent.ACTION_VIEW,uri);

  this.startActivity(intent);

  //Wherepkg_nameisthefullpackagepathforanapplication

  24. Google Search Launch Web Browser :

  Java程式碼

收藏程式碼

相關推薦

android 開啟各種檔案 intent.setDataAndType

 Java程式碼 /**   * 開啟檔案   * @param file   */   private void openFile(File file){   Intent intent = new Intent();   intent.addFlags(I

Android開啟各種檔案的MIME TYPE-setDataAndType函式中的Type關聯

MIME:全稱Multipurpose Internet Mail Extensions,多功能Internet 郵件擴充服務。它是一種多用途網際郵件擴充協議,在1992年最早應用於電子郵件系統,但後來也應用到瀏覽器。MIME型別就是設定某種副檔名的檔案用一種應用程式來開啟的方式型別,當該副檔名檔案被訪問

android開啟各種檔案intent

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.net.Uri.Builder; import java.io.File; import android.con

android獲取一個用於開啟各種檔案intent

//android獲取一個用於開啟文字檔案的intent public static Intent getTextFileIntent( String param, boolean paramBoolean) { Intent intent = new Intent

android用於開啟各種檔案intent(轉)

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.net.Uri.Builder; import java.io

android用於開啟各種檔案intent,包括以下檔案PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDE(程式碼待完善)

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.net.Uri.Builder;import java.io.File;impor

Android--用intent開啟各種檔案

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.net.Uri.Builder; import java.io.File;

Android開啟各種型別的檔案方法總結

很簡單,通過呼叫系統的intent,我們可以開啟各種檔案,不熟悉的朋友可以瞭解下action、datatype、uri的相關知識。 通用方法如下: public static Intent openFile(String filePath){ File fil

intent開啟各種檔案 開啟sd卡路徑 開啟系統目錄...

在其他類中呼叫MyIntent類中的方法,例如: Intent it = MyIntent .getHtmlFileIntent("/sdcard/tutorial.html");//對應你的檔名 startActivity( it ); //可用於獲取開

Notification的使用以及Intent開啟各種檔案

一:Notification的使用 使用步驟: 流程模組: 第一步: 建立一個通知欄的Builder構造類 (Create a Notification Builder) 第二步: 定義通知欄的Action (Define the N

Intent開啟各種檔案

1.Android開啟系統播放器:Uri uri = Uri.parse(url);// Uri uri = Uri.parse("rtsp://10.103.131.23:554/28960004/j04.mp4");

android各種檔案目錄

今天學習FileProvider,裡面就涉及到了內部儲存,外部儲存。就去查了一下,這裡整理一下。 內部儲存: 主要涉及到的方法:context.getCacheDir()和context.getFilesDir() context.getCacheDi

android Intent開啟各種型別檔案

import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.net.Uri.Builder; import java.io.File;

android獲取一個用於開啟Word檔案intent

               最近在做專案使用webview顯示後,有寫文件需要開啟,找了一些資料,研究了一下,弄出來了!  下面貼一下主要程式碼: param為文件的主要路徑 public static Intent getWordFileIntent(String

android 應用元件[通用 Intent---開啟特定型別的檔案] 十二

在 Android 4.4 或更高版本上執行時,您可以不必檢索必須匯入應用的檔案副本(使用  操作),而是使用  操作並指定 MIME 型別,請求開啟由另一個應用管理的檔案。如果還需要允許使用者建立應用可寫入的新文件,可改用  操作。例如, Intent 允許使用者選

android intent開啟各種格式文件方法

我們開發的時候經常碰到開啟各種文件,目前的應用處理方式 基本都是依賴於三方軟體開啟 ,而不是在應用內開啟,因為檔案格式有很多,倘若都在應用內開啟的話,肯定要增加很大的開發時間和開發成本,而且實現效果沒有一些三方的app實現的效果好。 話不多說,貼上程式碼 工具類 impo

Android studio 或java開啟txt檔案

剛剛學習碎片知識,顯示的內容如果是txt該如何做呢?這就需要開啟檔案了,話不多說,上程式碼。  我的檔案在: a為標題檔案,a0為每個標題的內容檔案 結果如下圖: 我的a和a0txt 由於新聞標題較多,新聞內容較多,就考慮用txt來裝

Android 版本更新之開啟apk檔案的前生今世

現在APP都少不了的一個功能就是版本更新,檢測到有新版,從伺服器下載下來APK,然後安裝,今天就來聊一聊它。 原始碼地址:github [Android6.0之前] 首先是許可權 <uses-permission android:name="android.

Android專案需要使用的各種檔案

任何一個新建的專案都會預設使用Android模式的專案結構,但這並不是專案真實的目錄結構,而是被Android Studio轉換過的這個模式結構比較簡潔明瞭,適合進行快速開發,將其切換為Project模式就是專案的真實結構了。 一.首先就是.grad

Android 手機儲存檔案各種路徑

String cacheDir = context.getExternalCacheDir().getPath(); /storage/emulated/0/Android/data/應用名稱/cache 一般放一些長時間儲存的資料 String filesDir = context.ge