通过已安装的APP信息操作应用程序

获取所有已安装程序列表

PackageManager pm =ctx.getPackageManager();
List packages = pm.getInstalledPackages(0);        //获取已安装的app的基本信息
  • 主要属性:
    • info = package.applicationInfo :应用信息对象

    • info.packageName :应用程序包名

    • info.applicationInfo.loadLabel(new PackageManager()).toString() :应用程序名称

    • info.sourceDir :安装路径

    • Drawable icon = info.loadIcon(pm)//图标对象

    • int flags = applicationInfo.flags//标记,也称为 状态机 ,可以记录当前app的一些特性

        if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) > 0) 
            //就认为当前app具备FLAG_EXTERNAL_STORAGE特性
        if ((flags & ApplicationInfo.FLAG_SYSTEM) > 0) {
            //当前app具备FLAG_SYSTEM属性.就是系统程序
      

通过包名卸载应用程序

Uri packageUri = Uri.parse("package:" + currentApp.packageName);//包名,指定该应用
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageUri);
startActivityForResult(uninstallIntent, 0);
  • 不能卸载系统程序,容易报错

通过包名打开一个应用程序

Intent intent = new Intent();
PackageManager pm = getPackageManager();
intent = pm.getLaunchIntentForPackage(currentApp.packageName);
 startActivity(intent);
  • 如果应用程序没有启动页面,例如个别系统程序,service,receiver等,此时
    intent为空,所以需要判断intent是否为空.

调用系统分享功能

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");//分享内容的类型, 纯文本
intent.putExtra(Intent.EXTRA_TEXT, "发现一个非常不错的应用, 赶紧下载哦! 下载地址:https://play.google" +
        ".com/store/apps/details?id=" + currentApp.packageName);//设置分享的文本内容
startActivity(intent);

打开程序的详细信息页面

Intent infoIntent = new Intent();
infoIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);        //设置动作过滤器,导向应用程序界面
Uri uri = Uri.fromParts("package", currentApp.packageName, null);        //设置包名,需要打开的程序
infoIntent.setData(uri);            //设置数据
startActivity(infoIntent);

你可能感兴趣的:(通过已安装的APP信息操作应用程序)