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代码

收藏代码

 

  Intentintent=newIntent(Intent.ACTION_WEB_SEARCH);

  Stringterm="Android";

  intent.putExtra(SearchManager.QUERY,term);

  activity.startActivity(intent);

  25. Send text using Intent (to messaging apps) :

  Java代码

收藏代码

 

  Intentintent=newIntent(Intent.ACTION_WEB_SEARCH);

  StringmsgBody="Thisismessage";

  Intentintent=newIntent(android.content.Intent.ACTION_SEND);

  intent.setType("text/plain");

  intent.putExtra(android.content.Intent.EXTRA_SUBJECT,

  "messagesubject");

  intent.putExtra(android.content.Intent.EXTRA_TEXT,msgBody);

  activity.startActivity(Intent.createChooser(intent,getResources().

  getString(R.string.share_by_using)));

  26. Create Shortcut on "Home Screen" :

  Java代码

收藏代码

 

  Intentintent=newIntent(Intent.ACTION_WEB_SEARCH);

  IntenttoPrint=newIntent(this,anCreateshutcut.class);

  IntentaddShortcut=newIntent

  ("com.android.launcher.action.INSTALL_SHORTCUT");

  addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,"Shutcutname");

  addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,toPrint);

  addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,

  Intent.ShortcutIconResource.fromContext(this,R.drawable.icon));

  Manifestfile:

  permission.INSTALL_SHORTCUT">

你可能感兴趣的:(android 打开各种文件 intent.setDataAndType)