手机软件进程管理器.doc_第1页
手机软件进程管理器.doc_第2页
手机软件进程管理器.doc_第3页
手机软件进程管理器.doc_第4页
手机软件进程管理器.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何在Android中实现任务管理器今天,我们来实现一个Android任务管理器,来简单管理Android系统中运行的程序进程,包括查看进程、杀死进程以及内存资源的查看,下面就一起看看这个任务管理器是如何实现的吧。任务管理器可以实现的功能有:1.查看当前系统下运行的所有的进程2.可以查看每个进程的进程号、版本号以及内存占用情况3.杀死进程(可以杀死全部进程或者杀死指定的进程)4.查看系统剩余内存效果图: 杀死全部进程实现思路:ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程,ActivityManager.getRunningAppProcesses(); 获取系统的所有进程ActivityManager.getProcessMemoryInfo(pids); 根据进程号获取每个进程的内存占用情况ActivityManager.restartPackage(processName) ; 根据进程的包名杀死某个进程PackageManager可以根据包名获取程序的图标、版本号、名字、权限、签名獲取所有的應用程序:我们来把重点放在如何取得Android已安装的应用程序信息上。这里就涉及到我们另外一个重要的service了,它就是package manager,它负责对安装的包进行管理。这里涉及到一些权限,我是直接照着android lancher的实现把它的权限拷贝过来的: 下面来看看具体的实现,我们创建一个自己的控件,使用LinearLayout来装载ImageSwitcher和Gallery两个控件,用 Gallery来显示获得的应用程序信息,用ImageSwitcher来显示应用程序的介绍,单击ImageSwitcher就能打开相应的应用程序。 public class MyLancherSwitcher extends LinearLayout implements ViewSwitcher.ViewFactory, AdapterView.OnItemSelectedListener,AdapterView.OnItemClickListener mImageSwitcher = new ImageSwitcher(context) ; mGallery = new Gallery(context) ; this.addView(mImageSwitcher, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,400) ; this.addView(mGallery, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 80) ; 架构选好了,下面就是如何为这个两个控件提供已安装的应用程序的信息,首先我们取得package manager : PackageManager manager = this.getContext().getPackageManager(); 然后package manager通过intent信息来提供相应的应用程序信息: Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List apps = manager.queryIntentActivities(mainIntent, 0); Collections.sort(apps, new ResolveInfo.DisplayNameComparator(manager); 然后我们定义个自己的类MyAppInfo来存储这些取得的信息: for (int i = 0; i count; i+) MyAppInfo application = new MyAppInfo(); ResolveInfo info = apps.get(i); application.title = info.loadLabel(manager); application.setActivity(new ComponentName( info.activityInfo.applicationInfo.packageName, info.activityI), Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); application.icon = info.activityInfo.loadIcon(manager); mApplications.add(application); final void setActivity(ComponentName className, int launchFlags) intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setComponent(className); intent.setFlags(launchFlags); 我们使用一个数组来存储这些MyAppInfo信息,并把它提供给Gallery: private static ArrayList mApplications; mGallery.setAdapter(new ApplicationsAdapter(this.getContext(), mApplications) ;Android安装卸载Apk的接口2010-12-16 16:28 by cppguy, 1627 visits,收藏,编辑安装程序:软件从无到有。卸载程序:软件从有到无。更新程序:软件的覆盖安装,可以保留原版本的数据,提升软件版本。安装程序的方法:1、 通过 Intent 机制,调出系统安装应用,重新安装应用的话,会保留原应用的数据。String fileName = Environment.getExternalStorageDirectory() +apkName;Uri uri = Uri.fromFile(newFile(fileName);Intent intent =newIntent(Intent.ACTION_VIEW);intent.setDataAndType(Uri, application/vnd.android.package-archive );startActivity(intent);2、 直接调用安装接口。Uri mPackageURI = Uri.fromFile(newFile(Environment.getExternalStorageDirectory() +apkName);intinstallFlags = 0;PackageManager pm = getPackageManager();tryPackageInfo pi = pm.getPackageInfo(packageName,PackageManager.GET_UNINSTALLED_PACKAGES);if(pi !=null)installFlags |= PackageManager.REPLACE_EXISTING_PACKAGE;catch(NameNotFoundException e)PackageInstallObserver observer =newPackageInstallObserver();pm.installPackage( mPackageURI , observer, installFlags);安装应用权限:android.permission.INSTALL_PACKAGES系统应用(安装在 /system/app 下面)可以采用该方式,第三方应用无法申请安装卸载权限。java.lang.SecurityException: Neither user 10039 nor current process has android.permission.INSTALL_PACKAGES.3、 执行 install 命令。install r 更新安装,默认新安装;如果不附上 -r 参数,则会清楚原应用的数据,版本一致则无法安装。( 1 ) am start ( 2 ) Runtime.exec(String args)( 3 ) Class execClass = Class.forName(android.os.Exec);4、 执行 cp / adb push 命令。由系统检测到应用程序有更新,自动完成重新安装。5、 通过第三方软件实现。Market , EOE , eTrackDog 均采用第一种方法实现更新。优点:由系统核心应用程序控制安装程序;缺点:无法控制安装过程;安装完成后,也无法立刻启动应用,需要用户确认;无法扩展。实例: Market 查找安装程序Intent intent =new Intent(Intent.ACTION_VIEW, Uri.parse(market:/search?q=pname:your.app.id);startActivity(intent);卸载程序的方法:1、 通过 Intent 机制,调出系统卸载应用。Uri packageURI = Uri.parse(package: your.app.id );Intent intent =newIntent(Intent.ACTION_DELETE);startActivity(intent);2、 直接调用卸载接口。PackageInstallObserver observer =newPackageInstallObserver();pm.installPackage( mPackageURI , observer, installFlags);卸载应用权限:android.permission.DELETE_PACKAGES3、 运行 rm apk 安装文件,由系统检测后调用卸载应用。备注说明:Android 系统的应用安装,在系统设置里面有一项,是否安装未知源,所在在软件更新的时候,需要检测这个选项,如果打钩,则只允许安装 Market 源 提供的安装程序,如果没有打钩的话,系统安装应用时会提示用户设置,如果选择设置,设置好后,无法返回安装界面;如果选择取消,则推出安装程序。所以,如 果是更新的话,一定要在下载之前就检测许可安装源的设置,或者在下载前检测是否已经下载过新的安装程序,避免重复下载安装程序。相关的代码如下:1.intresult = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0 );2.if(result = 0 ) 3. / show some dialog here4. / .5. / and may be show application settings dialog manually

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论