(获取应用的包名/应用名等信息)打开、安装和卸载应用

来源:互联网 发布:scp 端口号 编辑:程序博客网 时间:2024/05/22 15:54

实现功能:
从本应用打开另外一个应用。

通过应用名称appName打开另外一个应用:
1、首先获取系统应用或者所有应用的包名/应用名/Activity名称/Icon等信息:
①获取系统应用:
(从应用名称获取系统应用的包名和程序的Activity名)

// 获得所有系统的    public void querySysAppInfo()    {        PackageManager pm = this.getPackageManager();        Intent intent = new Intent(Intent.ACTION_MAIN, null);        intent.addCategory(Intent.CATEGORY_LAUNCHER);        // 通过查询,获得所有ResolveInfo对象.        List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent,                PackageManager.MATCH_DEFAULT_ONLY);        String activityName = "";        String pkgName = "";        String appLabel = "";        for (ResolveInfo reInfo : resolveInfos)        {            activityName = reInfo.activityInfo.name; // 获得该应用程序的启动Activity的name            pkgName = reInfo.activityInfo.packageName; // 获得应用程序的包名            appLabel = (String) reInfo.loadLabel(pm); // 获得应用程序的Label            System.out.println("1\\" + appLabel + " activityName---"                    + activityName + " pkgName---" + pkgName);            // Drawable icon = reInfo.loadIcon(pm); // 获得应用程序图标            //此处用equalsIgnoreCase是为了防止应用名称大小写导致包名等找不到            if (appLabel.equalsIgnoreCase(appName))            {                System.out.println(appLabel + " activityName---" + activityName                        + " pkgName---" + pkgName);                appPackageName = pkgName;                appAcitivityName = activityName;            }        }    }

②获取手机中所有应用:
(从应用名称获取系统应用的包名)

    // 全部程序包    private void queryFilterAppInfo()    {        PackageManager pm = this.getPackageManager();        // 查询所有已经安装的应用程序        List<ApplicationInfo> listAppcations = pm                .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的        String activityName = "";        String pkgName = "";        String appLabel = "";        for (ApplicationInfo app : listAppcations)        {            pkgName = app.packageName; // 获得应用程序的包名            appLabel = (String) app.loadLabel(pm); // 获得应用程序的Label            System.out.println("2、" + appLabel + " activityName---"                    + activityName + " pkgName---" + pkgName);            // Drawable icon = reInfo.loadIcon(pm); // 获得应用程序图标            if (appLabel.equalsIgnoreCase(appName))            {                System.out.println(appLabel + " pkgName---" + pkgName);                appPackageName = pkgName;            }        }    }

2、从本应用打开另外一个应用
2种方法:
①:需要用到(appPackageName)包名+(appAcitivityName)activity名:

 // 前名一个参数是应用程序的包名,后一个是这个应用程序的Activity名                         Intent intent = new Intent();                         intent.setComponent(new ComponentName(appPackageName,                         appAcitivityName));                         startActivity(intent);

②:需要用到包名(直接启动)

Intent intent = getPackageManager()                                .getLaunchIntentForPackage(appPackageName);                        if (intent != null)                            // 已安装包 直接启动                            startActivity(intent);

3、卸载应用:
传入appPackageName包名

    Uri uri = Uri.fromParts("package",appPackageName, null);                          Intent intent = new Intent(Intent.ACTION_DELETE, uri);                          startActivity(intent);

4、安装应用:
前提是APK已经放在了sdcard根目录下了

 //安装程序的apk文件路径                     String fileName =                     Environment.getExternalStorageDirectory() + apkName;                     //创建URI                     Uri uri = Uri.fromFile(new File(fileName));                     //创建Intent意图                     Intent intent = new Intent(Intent.ACTION_VIEW);                     //设置Uri和类型                     intent.setDataAndType(Uri,                     application/vnd.android.package-archive");                     //执行意图进行安装                     startActivity(intent);
0 0
原创粉丝点击