关闭

关于android 应用中安装另一个应用 打开另一个应用 判断另一个应用是否安装

标签: android
949人阅读 评论(0) 收藏 举报
分类:

转自:http://blog.csdn.net/jiaruoranshuai/article/details/48677375

1.在一个安卓应用中安装另一个android应用

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(tempApk),"application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.android.packageinstaller",    "com.android.packageinstaller.PackageInstallerActivity");
ctx.startActivity(intent);

2.获取一个apk文件的包名

PackageManager pm = context.getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(Constant.DOWNLOAD_DIR + "/" + functionalls.get(i).getId() + ".apk", PackageManager.GET_ACTIVITIES);//第一个参数是apk文件的路径
ApplicationInfo appInfo = null;
if (info != null) {
    appInfo = info.applicationInfo;
    String packageName = appInfo.packageName;    
}

3.启动另一个android应用(需要知道包名)

private void doStartApplicationWithPackageName(String packagename) {

    // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
    PackageInfo packageinfo = null;
    try {
        packageinfo = context.getPackageManager().getPackageInfo(packagename, 0);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    if (packageinfo == null) {
        return;
    }

    // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    resolveIntent.setPackage(packageinfo.packageName);

    // 通过getPackageManager()的queryIntentActivities方法遍历
    List<ResolveInfo> resolveinfoList = context.getPackageManager()
            .queryIntentActivities(resolveIntent, 0);

    ResolveInfo resolveinfo = resolveinfoList.iterator().next();
    if (resolveinfo != null) {
        // packagename = 参数packname
        String packageName = resolveinfo.activityInfo.packageName;
        // 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]
        String className = resolveinfo.activityInfo.name;
        // LAUNCHER Intent
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);

        // 设置ComponentName参数1:packagename参数2:MainActivity路径
        ComponentName cn = new ComponentName(packageName, className);

        intent.setComponent(cn);
        startActivity(intent);
    }
}


4.判断一个apk文件是否已经安装成功(根据报名判断该应用是否已经成功安装)

private boolean isAppInstalled(String packageName){
    PackageManager pm = context.getPackageManager();
    boolean installed =false;
    try{
        pm.getPackageInfo(uri,PackageManager.GET_ACTIVITIES);
        installed =true;
    }catch(PackageManager.NameNotFoundException e){
        installed =false;
    }
    return installed;
}

0
0
查看评论

Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root)

  • 2017-08-22 20:28
  • 27.97MB
  • 下载

Android---允许其他应用程序启动你的Activity

本文译自:http://developer.android.com/training/basics/intents/filters.html 前面的两课一直关注了故事的一边:从你的应用程序中启动另一个应用程序的Activity。但是如果你的应用能够执行一个可能对另外的应用程序有用的操作,那么你的应...
  • FireOfStar
  • FireOfStar
  • 2013-04-02 07:52
  • 3465

Android应用打开另一个应用程序

在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件。 如果既有包名又有主类的名字,那就好 办了, 直接像下面就行: Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCat...
  • zml_2015
  • zml_2015
  • 2015-12-27 19:20
  • 5811

Android程序中实现APK的安装

在项目中我们有这样一个场景,我们的客户端在登录的时候会联网到服务器进行版本的检查,如果有新版本,则提示用户是否下载新版本。如果用户点击了下载,则下载完成后需要主动跳到安装的界面,这样更加人性化,增强了用户体验,用户不必要去自己找已下载的安装包,然后手动安装。 先看一下下面这个d
  • sunchaoenter
  • sunchaoenter
  • 2011-08-12 21:28
  • 43093

Android程序中安装APP总结

−目录 Android程序中安装APP总结 安装APP 方法1(普通) 方法2(静默) 方法3 卸载APP 方法1 方法2 打开APP 下载APP Android程序中安装APP总结 安装...
  • wocao1226
  • wocao1226
  • 2013-05-27 16:03
  • 6935

Android中如何在应用A中启动或安装应用B

有时候一个应用需要启动另外一个应用来完成操作,比如在某些应用中打开闹钟,相机,日历等等。启动或安装相应的应用的方法:Step1:判断是否安装目标应用。只要知道目标应用的安装包名就可以通过判断"/data/data/packagename"是否存在来实现。/** * 判断是否
  • zuolongsnail
  • zuolongsnail
  • 2011-06-01 18:10
  • 8984

Android获取安装软件列表并启动某个app

Android 获取所有安装的软件包名 StringBuffer strBuff = new StringBuffer(); strBuff.append(mServiceListView.getText()); List<PackageInfo&...
  • junbujianwpl
  • junbujianwpl
  • 2016-05-02 11:59
  • 949

Android内核解读-应用的安装过程

前言我们知道,在android手机上安装一个apk很简单,只要打开apk文件,默认就会弹出安装界面,然后点击确定,经过若干秒后,apk就安装成功了,可是你知道apk的安装过程是什么吗?你知道android系统在安装一个apk的时候都干了什么吗?在本文中,将一一解答这个问题。简单来说,apk的安装过程...
  • singwhatiwanna
  • singwhatiwanna
  • 2014-02-22 17:44
  • 15524

Android应用程序安装过程源代码分析

Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程,本文将详细分析这个过程。 ...
  • Luoshengyang
  • Luoshengyang
  • 2011-09-14 00:59
  • 98355

Android 安装应用的两种方式--外部应用安装器安装和静默安装(系统应用)

安装应用的两种方式 1.调用外部应用安装器安装(全部适用) 2.具有系统权限的应用通过反射PackageManager的接口实现静默安装
  • qqwuy_muzi
  • qqwuy_muzi
  • 2017-06-09 15:41
  • 497
    个人资料
    • 访问:217830次
    • 积分:2730
    • 等级:
    • 排名:第15684名
    • 原创:24篇
    • 转载:263篇
    • 译文:0篇
    • 评论:25条
    文章分类
    最新评论