近日,微信上線了一個基於大數據分析的新功能「微信指數」。在搜索框輸入「微信指數」,「微信指數+搜索內容」,或者「搜索內容+微信指數」,再點擊下方的搜一搜,頁面就出來了。微信官方給出了微信指數的三種應用場景:1、捕捉熱詞,看懂趨勢;2、監測輿情動向,形成研究結果;3、洞察用戶興趣,助力精準營銷。
大家早上好,新的一周開始啦!
本篇是 Othershe 的第三篇投稿,帶了權限 android.permission.PACKAGE_USAGE_STATS 的使用講解,希望能夠幫助到大家。
Othershe 的博客地址:
http://www.jianshu.com/u/4235f2b5b350
什麼是使用記錄訪問權限呢?這是在 Android5.0 新添加的,通過該權限我們可以查看設備上其它應用使用情況的統計信息等。如何使用該權限呢?
首先在 manifest 中添加:
由於該權限默認只授予系統應用,所以添加了 ignore 屬性。然後通過如下代碼進而手動打開權限:
當然只要我們在manifest中進行了權限配置,也可以通過 設置->安全->有權查看使用情況的應用 來打開權限:
到此我們的應用就擁有了該權限。那麼有了這個權限到底能做什麼呢?繼續往下看...
前段時間和同事聊到了一個叫我要當學霸的app,裡邊有個學習監督的功能,就需要使用記錄訪問權限,當打開權限後,除了自己和桌面外,其它app都不能正常使用,點擊其它app時會直接退到後臺並彈出一個提示頁面。不妨我們來模擬下這個功能。
在這之前我們首先看一個類 UsageStatsManager:
可以看到該類提供了五種時間間隔類型,這裡我們比較關注 queryUsageStats() 方法,通過該方法我們可以得到一段時間內其它應用的使用情況。
我們實現思路是這樣的,通過 UsageStatsManager類 獲得2秒內手機app的使用數據,找到時間最近的一個,如果不是我們自己的app或桌面則模擬home鍵點擊,同時彈出一個提示頁面,具體的代碼如下:
因為時間周期是2秒,所以這裡我們採用 INTERVAL_BEST 作為時間間隔。其中的UsageStats 對象對應一個查詢到的app數據,主要包含以下信息:
getTopApp() 是我們的核心方法,當然我們需要開啟一個服務,然後在服務中每隔500毫秒執行一次上邊的方法,這樣就能起到不斷檢測的作用:
打開權限、啟動服務,可以看到實際的運行效果如下,基本符合我們的預期。
類似的道理,我們也可以判斷某個app是否在前臺運行。
上邊我們使用了INTERVAL_BEST 時間間隔類型,還可以使用其它4個,例如使用INTERVAL_YEARLY:
上邊的代碼我們最終獲得了過去一年手機上使用過的app的包名集合(其中包括系統級別的):
拿到這些包名可以做什麼呢?
其實對於網賺類型的應用有這樣一種業務場景,就是用戶通過下載app來做任務進而賺取收益,但是如果當前設備通過其它網賺應用已經下載過某個app,然後卸載了,再通過你的網賺應用下載。如果你不知道用戶之前安裝過該app,就需要給用戶結算相應的收益,但是你的上遊渠道是不會給你結算的,因為這屬於同一設備上的重複下載,這樣對公司而言就是虧損的。
有了歷史包名信息,我們就可以判斷用戶在一定的時間周期內是否安裝過對應的app,進而採取相應的策略,這樣可以在一定程度降低損失。當然有個前提,你要友好的引導用戶開啟權限。
先到這裡吧,更多的用法還有待進一步探究。
Demo地址:
http://download.csdn.net/download/shehuan320_/9760025
每天學習累了,看些搞笑的段子放鬆一下吧。關注最具娛樂精神的公眾號,每天都有好心情。
如果你有好的技術文章想和大家分享,歡迎向我的公眾號投稿,投稿具體細節請在公眾號主頁點擊「投稿」菜單查看。
歡迎長按下圖 -> 識別圖中二維碼或者掃一掃關注我的公眾號: