//启动媒体库
Intent i = new Intent();
ComponentName comp = new ComponentName("com.android.camera","com.android.camera.GalleryPicker");
i.setComponent(comp);
i.setAction("android.intent.action.VIEW");
startActivity(i);
//启动相机
Intent mIntent = new Intent();
ComponentName comp = new ComponentName("com.android.camera","com.android.camera.Camera");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.VIEW");
startActivity(mIntent);
//启动htmlviewer,并打开指定的一个文件 注意TXT不能是ANSI的,否则会乱码
Intent intent = new Intent();
ComponentName cn = new ComponentName("com.android.htmlviewer", "com.android.htmlviewer.HTMLViewerActivity");
intent.setComponent(cn);
Uri uri = Uri.fromFile(new File("/sdcard/demo.txt"));
intent.setDataAndType(uri, "text/plain");
startActivity(intent);
首先apk安装涉及几个目录,system/app (系统自带的应用程序,无法删除)、data/app(用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录)、data/data(存放应用程序的数据)、Data/dalvik-cache(将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一)) 。。。
安装过程:复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
卸载过程:删除安装过程中在上述三个目录下创建的文件及目录。
一、系统应用安装:
PackageManagerService处理各种应用的安装,卸载,管理等工作,开机时由systemServer启动此服务
(源文件路径:android\frameworks\base\services\java\com\android\server\PackageManagerService.java)
PackageManagerService服务启动的流程:
1.
首先扫描安装“system\framework”目录下的jar包
1.
scanDirLI(mFrameworkDir,PackageParser.PARSE_IS_SYSTEM,
scanMode | SCAN_NO_DEX);
2.第二步扫描安装“system\app”目录下的各个系统应用
scanDirLI(mSystemAppDir,PackageParser.PARSE_IS_SYSTEM, scanMode);
3.第三步扫描“data\app”目录,即用户安装的第三方应用
scanDirLI(mAppInstallDir, 0, scanMode);
4.第四步扫描" data\app-private"目录,即安装DRM保护的APK文件(目前没有遇到过此类的应用)。
scanDirLI(mDrmAppPrivateInstallDir,0, scanMode | SCAN_FORWARD_LOCKED);
看到这里相信你已经对apk的安装卸载有些头目了吧,接来下请看这个,会让你柳暗花明的:
final ComponentName cn = new ComponentName(app.appname.substring(0,
"com.eshore.efilm", "com.eshore.efilm.Efilm");
Intent intent = new Intent();
intent.setComponent(cn);
intent
.setAction("android.intent.action.VIEW");
startActivity(intent);
Android程序使用代码的安装和卸载!!!
|