Android代码,如何实现将本机已安装的应用进行分类,例如列出游戏类,工具类
请教各位,能否提供思路,或已有过类似开发,提供下具体实现方式。
目前已经想到:
①列出所有包名和应用名
②上传至服务器,服务器通过应用名到各大安卓市场进行模拟请求。返回相应类目
但是想到这样子效率很低,如果APP很多,速度会非常慢,匹配也很难做到100%精确。
PS:正在开发的一款工具软件,是面向国外市场。很多应用国内市场的分发渠道没有,只能通过google play 或者其他国外第三方应用分发平台。
PHP中文网2017-04-17 18:01:41
Hi 你好,我覺得這個東西在Android端實作不難,難在服務端。
Android要處理的工作無非是收集設備上已安裝App的資訊上傳到伺服器,然後伺服器返回App的詳細資訊(至於怎麼能讓伺服器返回資訊的效率高一些,待會兒說),之後就是展示訊息。
如果服務端接收到客戶端的請求之後才開始透過應用名稱、包名去各大市場查詢詳細信息,這樣效率就相當低了,最好的方法是弄個爬蟲不定期去爬各大市場,提前快取一定數據,這樣基本上能即時回應客戶端的請求。不知道你了解一些App降價監控的產品不,他們基本上也是這個思路。重點還是這個爬蟲演算法怎麼弄,要考慮到伺服器的負載,目標伺服器的反爬蟲策略,快取資料的有效時間,根據應用的熱門程度肯定會有不同的策略對吧。所以感覺弄這套演算法才是整個專案的重中之重。
有些應用可能出現應用名稱相同但是包名不一致的情況,例如國內市場是一個包名,發到Google Play又是另一個包名,這個也要注意一下。
高洛峰2017-04-17 18:01:41
上邊的回答都挺好了,可以藉鑑,你自己的思路也是對的。我的回答也差不多。就應用程式本身來說,目前並沒有「遊戲」、「新聞」、「社交」等等這種識別屬性,它們都是一樣的應用,那些屬性歸類都是認為劃分的,所以,要實現你說的東西,還得靠“人”,具體就是人為收集應用大數據(比如應用包名),這部分可以爬蟲去爬各大應用商店的應用,主流大型應用商店也就那麼幾個,大部分應用在不同的商店還是保持同樣的包名的。再把資料分類(分成所謂的遊戲、社交等),說著簡單,但是不是感覺事情已經很大了?跟做個應用程式商店差不多了?我感覺確實挺大。前期資料準備很重要,你得有足夠的資料才能確保上報的應用你在後端都能符合到對應的分類。至於客戶端,做不了這麼複雜的工作了,客戶端只做所在手機上的應用程式掃描上報,接收後端的分類回饋。但也有個問題,新發布的應用總是無法界定分類的(或者你能接受安排一個未分類)。我想到的暫時這麼多了。