http://blog.csdn.net/netpirate/article/details/5801379

直接打开已安装的应用的MainActivity界面:

Intent localIntent = new Intent("android.intent.action.MAIN");    localIntent.setComponent(new ComponentName("com.demo", "com.demo.MainActivity"));    startActivity(localIntent);

安装程序:软件从无到有。卸载程序:软件从有到无。更新程序:软件的覆盖安装,可以保留原版本的数据,提升软件版本。 安装程序的方法: 1、  通过Intent机制,调出系统安装应用,重新安装应用的话,会保留原应用的数据。 String fileName = Environment.getExternalStorageDirectory() + apkName;Uri uri = Uri.fromFile(new File(fileName));Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri, application/vnd.android.package-archive");startActivity(intent); 2、  直接调用安装接口。 Uri mPackageURI = Uri.fromFile(new File(Environment.getExternalStorageDirectory() + apkName));int installFlags = 0;PackageManager pm = getPackageManager();try{    PackageInfo pi = pm.getPackageInfo(packageName,    PackageManager.GET_UNINSTALLED_PACKAGES);    if(pi != null)    {        installFlags |= PackageManager.REPLACE_EXISTING_PACKAGE;    }}catch (NameNotFoundException e){}PackageInstallObserver observer = new PackageInstallObserver();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 = new Intent(Intent.ACTION_DELETE);startActivity(intent); 2、  直接调用卸载接口。 PackageInstallObserver observer = new PackageInstallObserver();pm.installPackage(mPackageURI, observer, installFlags); 卸载应用权限:android.permission.DELETE_PACKAGES 3、  运行rm apk安装文件,由系统检测后调用卸载应用。 备注说明:Android系统的应用安装,在系统设置里面有一项,是否安装未知源,所在在软件更新的时候,需要检测这个选项,如果打钩,则只允许安装Market源提供的安装程序,如果没有打钩的话,系统安装应用时会提示用户设置,如果选择设置,设置好后,无法返回安装界面;如果选择取消,则推出安装程序。所以,如果是更新的话,一定要在下载之前就检测许可安装源的设置,或者在下载前检测是否已经下载过新的安装程序,避免重复下载安装程序。 相关的代码如下:1.          int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0);      2.          if (result == 0) {      3.          // show some dialog here      4.          // ...      5.          // and may be show application settings dialog manually      6.          Intent intent = new Intent();      7.          intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);      8.          startActivity(intent);     9.          } public static final class Settings.Secure extends Settings.NameValueTablepublic static final String INSTALL_NON_MARKET_APPSSince: API Level 3Whether the package installer should allow installation of apps downloaded from sources other than the Android Market (vending machine). 1 = allow installing from other sources 0 = only allow installing from the Android Market。 下面是程序更新的几个步骤演示:OVER!

更多相关文章

  1. Android(安卓)Q Impact
  2. android的system.img,userdata.img,ramdisk.img分析
  3. Android(安卓)微信小程序打开app,app分享小程序到微信
  4. android 定时熄屏
  5. Android(安卓)文件系统路径
  6. Android(安卓)NotificationListenerService监听获取通知栏通知和
  7. android下实现程序不操作一段时间,执行另一个程序
  8. Android7.0调用系统相机和裁剪
  9. Android(安卓)简单的照相机程序

随机推荐

  1. 关于XML字符的详细介绍
  2. 关于server.xml的9篇文章推荐
  3. 关于xdoc的10篇文章推荐
  4. 关于JTree的文章推荐
  5. 关于SQLite多线程的用法详解
  6. 关于J2ME 3D图形技术的实例详解
  7. c#对xml的CURD操作的代码示例
  8. 详解xml与Java之间的转换
  9. xml在powerbuilder中应用的代码示例
  10. 在asp下通过xml打包网站文件的方法