获取Android设备中全部App

获取android设备中全部app名称和应用包名

/**
     * 获取android设备中全部app名称和应用包名
     * */
    public void getAllAppNames(){
        ArrayList customApps = new ArrayList<PackageInfo>(); // 普通应用程序列表
        ArrayList systemApps = new ArrayList<PackageInfo>(); // 系统应用程序列表
        // 得到PackageManager对象
        PackageManager pm=getPackageManager();
        获取到所有安装了的应用程序的信息,包括那些卸载了的,但没有清除数据的应用程序
        List<PackageInfo> appList=pm.getInstalledPackages(PackageManager.MATCH_UNINSTALLED_PACKAGES);

        int j=0;

        for (PackageInfo packageInfo : appList) {
            // 列出普通应用
            if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
                customApps.add(packageInfo);
            }
            // 列出系统应用,总是感觉这里设计的有问题,希望高手指点
            if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) {
                systemApps.add(packageInfo);
            }
            //得到手机上已经安装的应用的名字,即在AndriodMainfest.xml中的app_name。
            String appName=packageInfo.applicationInfo.loadLabel(getPackageManager()).toString();
            //得到手机上已经安装的应用的图标,即在AndriodMainfest.xml中的icon。
            Drawable drawable = packageInfo.applicationInfo.loadIcon(getPackageManager());
            //得到应用所在包的名字,即在AndriodMainfest.xml中的package的值。
            String packageName=packageInfo.packageName;
            Log.e("=======aaa", "应用的名字:"+appName);
            Log.e("=======bbbb", "应用的包名字:"+packageName);
            // 禁用
           // pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);

            j++;
        }
        Log.e("========cccccc", "应用的总个数:"+j);
        Log.e("========eeeeee", "普通应用总个数:"+customApps.size());
        Log.e("========dddddd", "系统应用总个数:"+systemApps.size());

    }

权限:

 <uses-permission android:name="android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE"
        android:protectionLevel="signatureOrSystem"/>

 对App进行操作

 /**
     *
     * 不可用状态:COMPONENT_ENABLED_STATE_DISABLED
     * 可用状态:COMPONENT_ENABLED_STATE_ENABLED
     * 默认状态:COMPONENT_ENABLED_STATE_DEFAULT
     *
     * */
    private void hidenApp(){
        PackageManager packageManager = getPackageManager();
        ComponentName componentName = new ComponentName(this, MainActivity.class);
        int res = packageManager.getComponentEnabledSetting(componentName);
        if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                || res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
            // 隐藏应用图标
            packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                    PackageManager.DONT_KILL_APP);
        }
    }

    /**
     *
     * 不可用状态:COMPONENT_ENABLED_STATE_DISABLED
     * 可用状态:COMPONENT_ENABLED_STATE_ENABLED
     * 默认状态:COMPONENT_ENABLED_STATE_DEFAULT
     *
     * */
    private void showApp(){
        PackageManager packageManager = getPackageManager();
        ComponentName componentName = new ComponentName(this, MainActivity.class);
        int res = packageManager.getComponentEnabledSetting(componentName);
        if (res == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
            // 显示应用图标
            packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                    PackageManager.DONT_KILL_APP);
        }
    }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值