首页
社区
课程
招聘
[原创]Android中无需权限获取应用程序列表
发表于: 2019-12-30 14:25 9924

[原创]Android中无需权限获取应用程序列表

2019-12-30 14:25
9924

最近在研究反编译的时候发现了系统的一种方式获取应用程序信息,这个可以无需任何权限,无任何感知的获取全部应用程序列表,这对于一些特别需要知道用户手机内是否安装了某些特定应用的的人来说真的是太好了.

 

经过我自己的实验,华为三星等手机没有任何问题.在9.0的系统上面也没有问题,10.0的我没有手机,如果哪位有也客户测试一些。简单的跟大家分享一下我的研究成果.

    private void getPackageList(Context ctx) {
        Log.d("TAG", "无需权限获取应用列表");
        PackageManager v9 = ctx.getPackageManager();
        String[] v2 = null;
        int uid = 1000;
        while (uid <= 19999) {
            v2 = v9.getPackagesForUid(uid);
            if (v2 != null && v2.length > 0) {
                for (String item : v2) {
                    try {
                        final PackageInfo v6 = v9.getPackageInfo(item, 0);
                        if (v6 == null) {
                            break;
                        }
                        CharSequence v7 = v9.getApplicationLabel(v9.getApplicationInfo(v6.packageName, PackageManager.GET_META_DATA));
                        Log.d("TAG", "应用名称 = " + v7.toString() + " (" + v6.packageName + ")");
                    } catch (PackageManager.NameNotFoundException e) {
                        e.printStackTrace();
                    }
                }
            }
            uid++;
        }
    }

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-1-3 10:56 被sunzhanwei编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (40)
雪    币: 1
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
非某些国产手机,获取应用列表本来就不需要权限
2019-12-30 15:49
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
我测试过了,小米手机不需要,但是华为,三星等是需要的,主要针对需要权限的手机,不需要权限的无所谓。
2019-12-30 15:52
0
雪    币: 14873
活跃值: (6098)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
List<App> apps = new ArrayList<App>();
        PackageManager pm = getPackageManager();
        List<PackageInfo> packs = pm.getInstalledPackages(0); 
通用的方法。你这个不通用?
2019-12-31 14:08
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
tDasm List apps = new ArrayList(); PackageManager pm = getPackageManager(); List packs = ...
getInstalledPackages这个函数在很多手机上面是要权限的,我的方法不用任何权限,不信自己试试。
最后于 2019-12-31 18:59 被sunzhanwei编辑 ,原因:
2019-12-31 18:58
0
雪    币: 14873
活跃值: (6098)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
sunzhanwei tDasm List apps = new ArrayList(); PackageManager pm = getPackageManag ...
不需要。

https://www.jianshu.com/p/dee8bc1fb847

最后于 2020-1-2 09:33 被tDasm编辑 ,原因:
2020-1-2 08:13
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
tDasm sunzhanwei tDasm List apps = new ArrayList(); Pac ...
自己去试试三星的,我已经测试过了,不是所有手机都不需要.只看了一个blog就说不需要,你是有多不严谨,我是拿着三星的真机测试过的.
2020-1-2 12:01
0
雪    币: 14873
活跃值: (6098)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不需要,并引用别人的测试证明,说明不是我一家之言。你呢?**************你测试了三星?有什么证明?我也测试了三星(安卓8.0)怎么不需要呢?附件是测试apk(这个apk不需要任何权限)
最后于 2020-1-3 16:08 被kanxue编辑 ,原因: 请注意说话语气,就事论事,勿人身攻击
上传的附件:
2020-1-2 14:44
0
雪    币: 12
活跃值: (1075)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
“存在一些机器,拿不到安装包列表”,这个命题的否命题是“所有的机器都能拿到安装包列表”,而不是“存在一些机器,能拿到安装包列表”。
2020-1-2 15:52
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
twsxtd “存在一些机器,拿不到安装包列表”,这个命题的否命题是“所有的机器都能拿到安装包列表”,而不是“存在一些机器,能拿到安装包列表”。
可能表述有问题,实在抱歉,我还是删了算了。本来就是简单分享,既然觉得没有用,留着干嘛。
2020-1-2 16:13
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11


来看你自己的nb程序,oppo A57,你取到了应用程序列表了吗?只有你自己的app。一个人的列表好爽啊、

2020-1-2 16:24
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
tDasm sunzhanwei tDasm List apps = new ArrayList(); Pac ...
请看你的程序,确实佩服,不需要权限,你能拿到自己的列表,厉害,我很佩服
2020-1-2 16:25
0
雪    币: 12
活跃值: (1075)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
sunzhanwei 可能表述有问题,实在抱歉,我还是删了算了。本来就是简单分享,既然觉得没有用,留着干嘛。
分享的内容挺有用的,因为我也遇到过一些 OV 的机器拿不到安装包列表;只是觉得楼上那位的反驳有点逻辑问题。楼主没必要为这个生气。
2020-1-2 17:14
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
twsxtd 分享的内容挺有用的,因为我也遇到过一些 OV 的机器拿不到安装包列表;只是觉得楼上那位的反驳有点逻辑问题。楼主没必要为这个生气。
并不是生气,只是觉得没严格的测试过,就敢随便说,我都是拿着公司的测试机做了很多测试才整理好提交上来的。但是别人随便一嘴就是没用的代码。既然没用为什么不分享个有用的呢。不过还是谢谢大家关注。而且我刚刚也去查看了Android的源代码,确实有权限控制,但是这个权限是很多手机默认就给了的。除非有一些机器,默认就不给,或者用户根本就不给这个权限,这个时候肯定获取不到。所以这个代码就是为了绕过这部分机器的限制做的。
2020-1-2 17:18
0
雪    币: 6369
活跃值: (1693)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
15
看雪真的应该加个屏蔽功能了
2020-1-2 17:23
0
雪    币: 348
活跃值: (1593)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
楼上脑子不好,经常在别人帖子下乱喷,楼主不要生气
2020-1-2 17:24
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
lipengzhu 楼上脑子不好,经常在别人帖子下乱喷,楼主不要生气
谢谢大家,我没生气,这是对这种随口就说的人真是无语了。大家需要代码直接单独跟我说吧,我就不放出来了。
2020-1-2 17:51
0
雪    币: 14873
活跃值: (6098)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
sunzhanwei 谢谢大家,我没生气,这是对这种随口就说的人真是无语了。大家需要代码直接单独跟我说吧,我就不放出来了。
你说的三星需要权限?***********。三星实机测试不需要权限,其他未测试。
这个app不是我写的,网上下载的。不要乱喷什么看你写的程序?你什么逻辑思维?提供测试就是自己写的?信口开河习以为常了?
最后于 2020-1-3 16:11 被kanxue编辑 ,原因:
2020-1-2 20:13
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
20
tDasm sunzhanwei 谢谢大家,我没生气,这是对这种随口就说的人真是无语了。大家需要代码直接单独跟我说吧,我就不放出来了。 你说的三星需要权限?说明是你 ...
自己网上随便找个就敢上传,你也是很nb啊,怎么不自己写啊,不会吧,我都把你上传的apk代码都看过一遍了。自己去看看你第一次回复的内容,我替你引用了
------------------------------------------------------------------------
List<App> apps = new ArrayList<App>();
        PackageManager pm = getPackageManager();
        List<PackageInfo> packs = pm.getInstalledPackages(0); 
通用的方法。你这个不通用?
------------------------------------------------------------------------
问我这个方法不通用?我告诉你,就是不通用,怎么的,有错么!!!不怪别人说你脑子不好使!
最后于 2020-1-2 21:31 被sunzhanwei编辑 ,原因:
2020-1-2 21:30
0
雪    币: 10017
活跃值: (3457)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
部分机型需要权限,部分不需要.
2020-1-2 23:55
0
雪    币: 641
活跃值: (404)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
tDasm sunzhanwei tDasm sunzhanwei 谢谢大家,我没生气 ...
这么简单的东西你都没发过贴,真佩服啊,在论坛这么多年,除了键盘侠,吹牛逼,你还做了什么,看看你自己回复的帖子就知道了.懒得理你.
2020-1-3 10:55
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这个代码有点像反编译出来的啊
2020-1-3 15:31
0
游客
登录 | 注册 方可回帖
返回
//