yinsui 2011-06-30
在系统安装的的底层常规应用中,是通过PackageInstaller来识别程序安装的intent来执行安装:
Java代码
packagecn.com;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
publicclassInstallApkextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intentintent=newIntent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://"
+"/sdcard/solitaire.apk"),
"application/vnd.android.package-archive");
startActivity(intent);
}
}
packagecn.com;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
publicclassInstallApkextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intentintent=newIntent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://"
+"/sdcard/solitaire.apk"),
"application/vnd.android.package-archive");
startActivity(intent);
}
}
PackageInstaller服务将会在内部匹配MIME类型为application/vnd.android.package-archive的intent,要说明的是setDataAndType的参数第一个为:URI,其实URI内部的String对应为file://加上常规路径,比如:file:///sdcard/test.apk,当然其他的Uri构造方法还可以Uri.fromFile(newFile(mFileFullPath)).
注意:在这里特地交代下MIME类型的小知识点:
在把输出结果传送到浏览器上的时候,浏览器必须启动应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Typeheader中.
假设你要传送一个MicrosoftExcel文件到客户端。那么这时的MIME类型就是"application/vnd.ms-excel"。在大多数实际情况中,这个文件然后将传送给Execl来处理(假设我们设定Excel为处理特殊MIME类型的应用程序)。在ASP中,设定MIME类型的方法是通过Response对象的ContentType属性.
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型.
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类,
常见的MIME类型
超文本标记语言文本.html,.htmltext/html
普通文本.txttext/plain
RTF文本.rtfapplication/rtf
GIF图形.gifimage/gif
JPEG图形.ipeg,.jpgimage/jpeg
au声音文件.auaudio/basic
MIDI音乐文件mid,.midiaudio/midi,audio/x-midi
RealAudio音乐文件.ra,.ramaudio/x-pn-realaudio
MPEG文件.mpg,.mpegvideo/mpeg
AVI文件.avivideo/x-msvideo
GZIP文件.gzapplication/x-gzip
TAR文件.tarapplication/x-tar