首页  >  问答  >  正文

Android代码,如何实现将本机已安装的应用进行分类,例如列出游戏类,工具类

Android代码,如何实现将本机已安装的应用进行分类,例如列出游戏类,工具类

请教各位,能否提供思路,或已有过类似开发,提供下具体实现方式。

目前已经想到:

①列出所有包名和应用名
②上传至服务器,服务器通过应用名到各大安卓市场进行模拟请求。返回相应类目


但是想到这样子效率很低,如果APP很多,速度会非常慢,匹配也很难做到100%精确。

PS:正在开发的一款工具软件,是面向国外市场。很多应用国内市场的分发渠道没有,只能通过google play 或者其他国外第三方应用分发平台。

PHP中文网PHP中文网2763 天前544

全部回复(3)我来回复

  • PHP中文网

    PHP中文网2017-04-17 18:01:41

    Hi 你好,我觉得这个东西在Android端实现不难,难在服务端。

    Android客户端的工作

    Android要处理的工作无非是收集设备上已安装App的信息上传到服务器,然后服务器返回App的详细信息(至于怎么能让服务器返回信息的效率高一些,待会儿说),之后就是展示信息。

    服务端的工作

    如果服务端接收到客户端的请求之后才开始通过应用名、包名去各大市场查询详细信息,这样效率就相当低了,最好的方法是弄个爬虫不定期去爬各大市场,提前缓存一定数据,这样基本上能实时响应客户端的请求。不知道你了解过一些App降价监控的产品不,他们基本上也是这个思路。重点还是这个爬虫算法怎么弄,要考虑到服务器的负载,目标服务器的反爬虫策略,缓存数据的有效时间,根据应用的热门程度肯定会有不同的策略对吧。所以感觉弄这套算法才是整个项目的重中之重。

    有些应用可能出现应用名相同但是包名不一致的情况,例如国内市场是一个包名,发到Google Play又是另一个包名,这个也要注意一下。

    回复
    0
  • ringa_lee

    ringa_lee2017-04-17 18:01:41

    我能想到的思路也是获取应用包名,上传到后台服务器分析。毕竟应用本身是没有任何信息记录自己所属分类的。

    回复
    0
  • 高洛峰

    高洛峰2017-04-17 18:01:41

    上边的回答都挺好了,可以借鉴,你自己的思路也是对的。我的回答也差不多。就应用本身来说,目前并没有“游戏”、“新闻”、“社交”等等这种标识属性,它们都是一样的应用,那些属性归类都是认为划分的,所以,要实现你说的东西,还得靠“人”,具体就是人为收集应用大数据(比如应用包名),这部分可以爬虫去爬各大应用商店的应用,主流大型应用商店也就那么几个,大部分应用在不同的商店还是保持同样的包名的。再把数据分类(分成所谓的游戏、社交等),说着简单,但是不是感觉事情已经很大了?跟做个应用商店差不多了?我感觉确实挺大。前期数据准备很重要,你得有足够多的数据才能确保上报的应用你在后端都能匹配到相应的分类。至于客户端,做不了这么复杂的工作了,客户端只做所在手机上的应用扫描上报,接收后端的分类反馈。但也有个问题,新发布的应用总是无法界定分类的(或者你能接受安排一个未分类)。我想到的暂时这么多了。

    回复
    0
  • 取消回复