ANDROID文件关联之MIME TYPE 


Android平台





自定义文件关联指的是打开一个你自己创建的文件,例如后缀是(.abc)。



首先我先介绍下常见文件关联,例如.txt、.jpg。



在Android中,任何文件类型或者MIME类型的关联性打开,是通过广播Intent来实现的。例如,你如果想要注册自己为.txt类型的查看器或者图片查看器,必须为你的Activity加入intent-filter来获取到一个来源所发出的Intent Broadcasting(广播),从而达到关联的目的。






首先我们来看一下data属性里的值



<intent-filter . . . >
<data
android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>
</intent-filter>
我们可以通过URL启动相应data属性描述的Activity。
URL:
scheme://host:port/path or pathPrefix or pathPattern
属性:
android:host
URL的主机部分



android:mimeType



MIME 媒体类型,例如image/jpeg或者text/xml。





一个合法的File Manager(文件管理器)在执行Open动作时,应该是发出一个intent.ACTION_VIEW。所以你的intent-filter应该是这样子的:



<activity android:name=".Demo1Activity" >
 
  
<intent-filter>
 <action android:name="android.intent.action.VIEW" />
 <category android:name="android.intent.category.DEFAULT" />
 <category android:name="android.intent.category.BROWSABLE" />
 <data android:scheme="file" />
 <data android:mimeType="*/*" />
 <data android:host="*" />
 <data android:pathPattern=".*.txt" />
 </intent-filter> 
   
</activity>
 
   
<activity android:name=".Demo2Activity" >
 
    <intent-filter>
 <action android:name="android.intent.action.VIEW" />
 <category android:name="android.intent.category.DEFAULT" />
 <category android:name="android.intent.category.BROWSABLE" />
 <data android:scheme="content" />
 <data android:host="*" />
 <data android:pathPattern=".*.txt" />
 </intent-filter> 
   
</activity>






在这里,你必须同时申明android:scheme, android:host, android:pathPattern, 方可令pathPattern正确生效。第一个文件关联指的是可以匹配file://mnt/sdcard/12345.txt这样的请求,启动Demo1Activity,第二个文件关联指的是可以匹配content://com.android.test/sdcard/123.txt 这样的请求,在文件管理器中点击这类的txt,可以启动Demo2Activity。如果你有需要,你可以加入android:mimeType来限定文件类型。例如你想打开jpg文件时启动你的activity,这是可以在<intent-filter></intent-filter>里添加<data android:mimeType="image/jpeg" />,具体的mimeType有哪些,你可以上网找,这里我就不一一列举了。






最后我们回到正题,怎么关联自定义文件,我想看到这里大家应该也有思路的,就是修改pathPattern=".*.abc",注意,由于这里打开的是文件,所以android:scheme="file"。这样就可以打开后缀是.adc文件,启动相应的activity。

=================================================


在manifest文件里->activity 添加

<intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <data android:mimeType="*/*">
 </intent-filter>

这样就把当前程序注册为 可以打开/查看所有类型的文件. 或者要查看jpeg, mimeType要改为: image/jpeg

当在文件管理器里点击任何文件, 系统都会试图去执行你的程序.

 

--------------------------------------------分割线----------------------------------------

一个合法的File Manager在执行Open动作时,应该是发出一个Intent.VIEW Action。所以你的intent-filter应该是这样子的:



view plain copy to clipboard print ?


1. <intent-filter>  
2. <action android:name="android.intent.action.VIEW" />  
3. <category android:name="android.intent.category.DEFAULT" />  
4. <category android:name="android.intent.category.BROWSABLE" />  
5. <data android:scheme="file" />  
6. <data android:mimeType="*/*" />  
7. <data android:host="*" />  
8. <data android:pathPattern=".*\\.txt" />  
9. </intent-filter>  
10. <intent-filter>  
11. <action android:name="android.intent.action.VIEW" />  
12. <category android:name="android.intent.category.DEFAULT" />  
13. <category android:name="android.intent.category.BROWSABLE" />  
14. <data android:scheme="content" />  
15. <data android:host="*" />  
16. <data android:pathPattern=".*\\.txt" />  
17. </intent-filter>



在这当中,data块缺一不可,你必须同时申明android:scheme, android:host, android:pathPattern, 方可令pathPattern正确生效。对于content scheme,将会匹配诸如:content://com.metago.astro.filesystem/sdcard/txt /pg17155.txt 这样的请求,你的Activity将可以有效地打开这样的txt文件。对于file scheme,大致会匹配诸如:file:///sdcard/txt/pg17155.txt这样的请求,并且,如果有必要,你可以加入 android:mimeType限定。


也就是说,尽管Android SDK的层面上,你不可能了解到哪些mime已经注册,一个自定义的mime如何注册,但对于基础系统(linux os layer)来说,内置的mime type还是存在的,这方面你可以参考Intent SDK文档和Notebook SDK Sample获得一鳞半爪的信息。

对于你自己想要关联的文件后缀,则应该使用上面的intent-filter组合来完成关联。
一旦intent-filter关联完成,在Activity的onCreate,onNewIntent中将可通过:
Intent intent=getIntent();
Uri uri=(Uri)intent.getData();
String path=uri.getPath(); 
序列获得关联打开文件的绝对路径。

这样的方法在ASTRO文件管理器中测试通过,并且在另一个测试project中进行了测试和证明机制有效。不过,在Root Explorer,And Explorer中均失败了,原因正在于这几个浏览器并不执行符合Android SDK规范的File Open操作。
可见,随意性是值得注意的坏招数。

--------------------------------------------分割线----------------------------------------


我们看一下 android 文件的mime类型:

Android文件关联文件名 安卓 关联文件_intent filter



{".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"},
  {".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"},
  {".prop", "text/plain"},
  {".rar", "application/x-rar-compressed"},
  {".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/xml"},   {".xml", "text/plain"},
  {".z", "application/x-compress"},
  {".zip", "application/zip"},
  {"", "*/*"}



Android文件关联文件名 安卓 关联文件_intent filter



 

另:

3gp video/3gpp
   aab application/x-authoware-bin
   aam application/x-authoware-map
   aas application/x-authoware-seg
   ai application/postscript
   aif audio/x-aiff
   aifc audio/x-aiff
   aiff audio/x-aiff
   als audio/X-Alpha5
   amc application/x-mpeg
   ani application/octet-stream      apk application/vnd.android.package-archive
   asc text/plain
   asd application/astound
   asf video/x-ms-asf
   asn application/astound
   asp application/x-asap
   asx video/x-ms-asf
   au audio/basic
   avb application/octet-stream
   avi video/x-msvideo
   awb audio/amr-wb
   bcpio application/x-bcpio
   bin application/octet-stream
   bld application/bld
   bld2 application/bld2
       bmp image/bmp
   bpk application/octet-stream
   bz2 application/x-bzip2
   cal image/x-cals
   ccn application/x-cnc
   cco application/x-cocoa
   cdf application/x-netcdf
   cgi magnus-internal/cgi
   chat application/x-chat
   class application/octet-stream
   clp application/x-msclip
   cmx application/x-cmx
   co application/x-cult3d-object
   cod image/cis-cod
   cpio application/x-cpio
   cpt application/mac-compactpro
   crd application/x-mscardfile
   csh application/x-csh
   csm chemical/x-csml
   csml chemical/x-csml
   css text/css
   cur application/octet-stream
   dcm x-lml/x-evm
   dcr application/x-director
   dcx image/x-dcx
   dhtml text/html
   dir application/x-director
   dll application/octet-stream
   dmg application/octet-stream
   dms application/octet-stream
   doc application/msword
   dot application/x-dot
   dvi application/x-dvi
   dwf drawing/x-dwf
   dwg application/x-autocad
   dxf application/x-autocad
   dxr application/x-director
   ebk application/x-expandedbook
   emb chemical/x-embl-dl-nucleotide
   embl chemical/x-embl-dl-nucleotide
   eps application/postscript
   eri image/x-eri
   es audio/echospeech
   esl audio/echospeech
   etc application/x-earthtime
   etx text/x-setext
   evm x-lml/x-evm
   evy application/x-envoy
   exe application/octet-stream
   fh4 image/x-freehand
   fh5 image/x-freehand
   fhc image/x-freehand
   fif image/fif
   fm application/x-maker
   fpx image/x-fpx
   fvi video/isivideo
   gau chemical/x-gaussian-input
   gca application/x-gca-compressed
   gdb x-lml/x-gdb
   gif image/gif
   gps application/x-gps
   gtar application/x-gtar
   gz application/x-gzip
   hdf application/x-hdf
   hdm text/x-hdml
   hdml text/x-hdml
   hlp application/winhlp
   hqx application/mac-binhex40
   htm text/html
   html text/html
   hts text/html
   ice x-conference/x-cooltalk
   ico application/octet-stream
   ief image/ief
   ifm image/gif
   ifs image/ifs
   imy audio/melody
   ins application/x-NET-Install
   ips application/x-ipscript
   ipx application/x-ipix
   it audio/x-mod
   itz audio/x-mod
   ivr i-world/i-vrml
   j2k image/j2k
   jad text/vnd.sun.j2me.app-descriptor
   jam application/x-jam
   jar application/java-archive
   jnlp application/x-java-jnlp-file
   jpe image/jpeg
   jpeg image/jpeg
   jpg image/jpeg
   jpz image/jpeg
   js application/x-javascript
   jwc application/jwc
   kjx application/x-kjx
   lak x-lml/x-lak
   latex application/x-latex
   lcc application/fastman
   lcl application/x-digitalloca
   lcr application/x-digitalloca
   lgh application/lgh
   lha application/octet-stream
   lml x-lml/x-lml
   lmlpack x-lml/x-lmlpack
   lsf video/x-ms-asf
   lsx video/x-ms-asf
   lzh application/x-lzh
   m13 application/x-msmediaview
   m14 application/x-msmediaview
   m15 audio/x-mod
   m3u audio/x-mpegurl
   m3url audio/x-mpegurl
   ma1 audio/ma1
   ma2 audio/ma2
   ma3 audio/ma3
   ma5 audio/ma5
   man application/x-troff-man
   map magnus-internal/imagemap
   mbd application/mbedlet
   mct application/x-mascot
   mdb application/x-msaccess
   mdz audio/x-mod
   me application/x-troff-me
   mel text/x-vmel
   mi application/x-mif
   mid audio/midi
   midi audio/midi
   mif application/x-mif
   mil image/x-cals
   mio audio/x-mio
   mmf application/x-skt-lbs
   mng video/x-mng
   mny application/x-msmoney
   moc application/x-mocha
   mocha application/x-mocha
   mod audio/x-mod
   mof application/x-yumekara
   mol chemical/x-mdl-molfile
   mop chemical/x-mopac-input
   mov video/quicktime
   movie video/x-sgi-movie
   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
   mpn application/vnd.mophun.application
   mpp application/vnd.ms-project
   mps application/x-mapserver
   mrl text/x-mrml
   mrm application/x-mrm
   ms application/x-troff-ms
   mts application/metastream
   mtx application/metastream
   mtz application/metastream
   mzv application/metastream
   nar application/zip
   nbmp image/nbmp
   nc application/x-netcdf
   ndb x-lml/x-ndb
   ndwn application/ndwn
   nif application/x-nif
   nmz application/x-scream
   nokia-op-logo image/vnd.nok-oplogo-color
   npx application/x-netfpx
   nsnd audio/nsnd
   nva application/x-neva1
   oda application/oda
   oom application/x-AtlasMate-Plugin
   pac audio/x-pac
   pae audio/x-epac
   pan application/x-pan
   pbm image/x-portable-bitmap
   pcx image/x-pcx
   pda image/x-pda
   pdb chemical/x-pdb
   pdf application/pdf
   pfr application/font-tdpfr
   pgm image/x-portable-graymap
   pict image/x-pict
   pm application/x-perl
   pmd application/x-pmd
   png image/png
   pnm image/x-portable-anymap
   pnz image/png
   pot application/vnd.ms-powerpoint
   ppm image/x-portable-pixmap
   pps application/vnd.ms-powerpoint
   ppt application/vnd.ms-powerpoint
   pqf application/x-cprplayer
   pqi application/cprplayer
   prc application/x-prc
   proxy application/x-ns-proxy-autoconfig
   ps application/postscript
   ptlk application/listenup
   pub application/x-mspublisher
   pvx video/x-pv-pvx
   qcp audio/vnd.qcelp
   qt video/quicktime
   qti image/x-quicktime
   qtif image/x-quicktime
   r3t text/vnd.rn-realtext3d
   ra audio/x-pn-realaudio
   ram audio/x-pn-realaudio
   rar application/x-rar-compressed
   ras image/x-cmu-raster
   rdf application/rdf+xml
   rf image/vnd.rn-realflash
   rgb image/x-rgb
   rlf application/x-richlink
   rm audio/x-pn-realaudio
   rmf audio/x-rmf
   rmm audio/x-pn-realaudio
   rmvb audio/x-pn-realaudio
   rnx application/vnd.rn-realplayer
   roff application/x-troff
   rp image/vnd.rn-realpix
   rpm audio/x-pn-realaudio-plugin
   rt text/vnd.rn-realtext
   rte x-lml/x-gps
   rtf application/rtf
   rtg application/metastream
   rtx text/richtext
   rv video/vnd.rn-realvideo
   rwc application/x-rogerwilco
   s3m audio/x-mod
   s3z audio/x-mod
   sca application/x-supercard
   scd application/x-msschedule
   sdf application/e-score
   sea application/x-stuffit
   sgm text/x-sgml
   sgml text/x-sgml
   sh application/x-sh
   shar application/x-shar
   shtml magnus-internal/parsed-html
   shw application/presentations
   si6 image/si6
   si7 image/vnd.stiwap.sis
   si9 image/vnd.lgtwap.sis
   sis application/vnd.symbian.install
   sit application/x-stuffit
   skd application/x-Koan
   skm application/x-Koan
   skp application/x-Koan
   skt application/x-Koan
   slc application/x-salsa
   smd audio/x-smd
   smi application/smil
   smil application/smil
   smp application/studiom
   smz audio/x-smd
   snd audio/basic
   spc text/x-speech
   spl application/futuresplash
   spr application/x-sprite
   sprite application/x-sprite
   spt application/x-spt
   src application/x-wais-source
   stk application/hyperstudio
   stm audio/x-mod
   sv4cpio application/x-sv4cpio
   sv4crc application/x-sv4crc
   svf image/vnd
   svg image/svg-xml
   svh image/svh
   svr x-world/x-svr
   swf application/x-shockwave-flash
   swfl application/x-shockwave-flash
   t application/x-troff
   tad application/octet-stream
   talk text/x-speech
   tar application/x-tar
   taz application/x-tar
   tbp application/x-timbuktu
   tbt application/x-timbuktu
   tcl application/x-tcl
   tex application/x-tex
   texi application/x-texinfo
   texinfo application/x-texinfo
   tgz application/x-tar
   thm application/vnd.eri.thm
   tif image/tiff
   tiff image/tiff
   tki application/x-tkined
   tkined application/x-tkined
   toc application/toc
   toy image/toy
   tr application/x-troff
   trk x-lml/x-gps
   trm application/x-msterminal
   tsi audio/tsplayer
   tsp application/dsptype
   tsv text/tab-separated-values
   tsv text/tab-separated-values
   ttf application/octet-stream
   ttz application/t-time
   txt text/plain
   ult audio/x-mod
   ustar application/x-ustar
   uu application/x-uuencode
   uue application/x-uuencode
   vcd application/x-cdlink
   vcf text/x-vcard
   vdo video/vdo
   vib audio/vib
   viv video/vivo
   vivo video/vivo
   vmd application/vocaltec-media-desc
   vmf application/vocaltec-media-file
   vmi application/x-dreamcast-vms-info
   vms application/x-dreamcast-vms
   vox audio/voxware
   vqe audio/x-twinvq-plugin
   vqf audio/x-twinvq
   vql audio/x-twinvq
   vre x-world/x-vream
   vrml x-world/x-vrml
   vrt x-world/x-vrt
   vrw x-world/x-vream
   vts workbook/formulaone
   wav audio/x-wav
   wax audio/x-ms-wax
   wbmp image/vnd.wap.wbmp
   web application/vnd.xara
   wi image/wavelet
   wis application/x-InstallShield
   wm video/x-ms-wm
   wma audio/x-ms-wma
   wmd application/x-ms-wmd
   wmf application/x-msmetafile
   wml text/vnd.wap.wml
   wmlc application/vnd.wap.wmlc
   wmls text/vnd.wap.wmlscript
   wmlsc application/vnd.wap.wmlscriptc
   wmlscript text/vnd.wap.wmlscript
   wmv audio/x-ms-wmv
   wmx video/x-ms-wmx
   wmz application/x-ms-wmz
   wpng image/x-up-wpng
   wpt x-lml/x-gps
   wri application/x-mswrite
   wrl x-world/x-vrml
   wrz x-world/x-vrml
   ws text/vnd.wap.wmlscript
   wsc application/vnd.wap.wmlscriptc
   wv video/wavelet
   wvx video/x-ms-wvx
   wxl application/x-wxl
   x-gzip application/x-gzip
   xar application/vnd.xara
   xbm image/x-xbitmap
   xdm application/x-xdma
   xdma application/x-xdma
   xdw application/vnd.fujixerox.docuworks
   xht application/xhtml+xml
   xhtm application/xhtml+xml
   xhtml application/xhtml+xml
   xla application/vnd.ms-excel
   xlc application/vnd.ms-excel
   xll application/x-excel
   xlm application/vnd.ms-excel
   xls application/vnd.ms-excel
   xlt application/vnd.ms-excel
   xlw application/vnd.ms-excel
   xm audio/x-mod
   xml text/xml
   xmz audio/x-mod
   xpi application/x-xpinstall
   xpm image/x-xpixmap
   xsit text/xml
   xsl text/xml
   xul text/xul
   xwd image/x-xwindowdump
   xyz chemical/x-pdb
   yz1 application/x-yz1
   z application/x-compress
   zac application/x-zaurus-zac
   zip application/zip