Android使用記錄訪問權(quán)限

作者簡介 原創(chuàng)微信公眾號郭霖 WeChat ID: guolin_blog

大家早上好,新的一周開始啦!

本篇是Othershe的第三篇投稿,帶了權(quán)限?android.permission.PACKAGE_USAGE_STATS 的使用講解,希望能夠幫助到大家。

Othershe的博客地址:

http://www.itdecent.cn/u/4235f2b5b350

正文

什么是使用記錄訪問權(quán)限呢?這是在 Android5.0 新添加的,通過該權(quán)限我們可以查看設(shè)備上其它應(yīng)用使用情況的統(tǒng)計(jì)信息等。如何使用該權(quán)限呢?

首先在 manifest 中添加:

由于該權(quán)限默認(rèn)只授予系統(tǒng)應(yīng)用,所以添加了ignore屬性。然后通過如下代碼進(jìn)而手動打開權(quán)限:

當(dāng)然只要我們在manifest中進(jìn)行了權(quán)限配置,也可以通過設(shè)置->安全->有權(quán)查看使用情況的應(yīng)用來打開權(quán)限:

到此我們的應(yīng)用就擁有了該權(quán)限。那么有了這個權(quán)限到底能做什么呢?繼續(xù)往下看...

前段時間和同事聊到了一個叫我要當(dāng)學(xué)霸的app,里邊有個學(xué)習(xí)監(jiān)督的功能,就需要使用記錄訪問權(quán)限,當(dāng)打開權(quán)限后,除了自己和桌面外,其它app都不能正常使用,點(diǎn)擊其它app時會直接退到后臺并彈出一個提示頁面。不妨我們來模擬下這個功能。

在這之前我們首先看一個類?UsageStatsManager:

可以看到該類提供了五種時間間隔類型,這里我們比較關(guān)注?queryUsageStats()?方法,通過該方法我們可以得到一段時間內(nèi)其它應(yīng)用的使用情況。

我們實(shí)現(xiàn)思路是這樣的,通過 UsageStatsManager類 獲得2秒內(nèi)手機(jī)app的使用數(shù)據(jù),找到時間最近的一個,如果不是我們自己的app或桌面則模擬home鍵點(diǎn)擊,同時彈出一個提示頁面,具體的代碼如下:

因?yàn)闀r間周期是2秒,所以這里我們采用?INTERVAL_BEST?作為時間間隔。其中的UsageStats?對象對應(yīng)一個查詢到的app數(shù)據(jù),主要包含以下信息:

getTopApp()?是我們的核心方法,當(dāng)然我們需要開啟一個服務(wù),然后在服務(wù)中每隔500毫秒執(zhí)行一次上邊的方法,這樣就能起到不斷檢測的作用:

打開權(quán)限、啟動服務(wù),可以看到實(shí)際的運(yùn)行效果如下,基本符合我們的預(yù)期。


類似的道理,我們也可以判斷某個app是否在前臺運(yùn)行。

上邊我們使用了INTERVAL_BEST?時間間隔類型,還可以使用其它4個,例如使用INTERVAL_YEARLY

上邊的代碼我們最終獲得了過去一年手機(jī)上使用過的app的包名集合(其中包括系統(tǒng)級別的):

拿到這些包名可以做什么呢?

其實(shí)對于網(wǎng)賺類型的應(yīng)用有這樣一種業(yè)務(wù)場景,就是用戶通過下載app來做任務(wù)進(jìn)而賺取收益,但是如果當(dāng)前設(shè)備通過其它網(wǎng)賺應(yīng)用已經(jīng)下載過某個app,然后卸載了,再通過你的網(wǎng)賺應(yīng)用下載。如果你不知道用戶之前安裝過該app,就需要給用戶結(jié)算相應(yīng)的收益,但是你的上游渠道是不會給你結(jié)算的,因?yàn)檫@屬于同一設(shè)備上的重復(fù)下載,這樣對公司而言就是虧損的。

有了歷史包名信息,我們就可以判斷用戶在一定的時間周期內(nèi)是否安裝過對應(yīng)的app,進(jìn)而采取相應(yīng)的策略,這樣可以在一定程度降低損失。當(dāng)然有個前提,你要友好的引導(dǎo)用戶開啟權(quán)限。

先到這里吧,更多的用法還有待進(jìn)一步探究。

Demo地址:

http://download.csdn.net/download/shehuan320_/9760025

文章原創(chuàng)作者GuoLin 書籍推薦

郭林大神原創(chuàng)android 書籍:《第一行代碼 android》

淘寶鏈接: https://s.click.taobao.com/t?e=m%3D2%26s%3DgKUfuKdAZKocQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67p2n%2BQBNMyE6Rku8%2Bpj6eJall3bs%2B3NRhNHnsKI%2BqxhyM0iVZhTFBom4YIorMPnmg8G0g2OJi%2FzmXHfenomYtn5EW9vzeG8LzfPUwktUBEmkxg5p7bh%2BFbQ%3D&pvid=10_106.6.161.154_3367_1490163222155

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本篇文章已授權(quán)微信公眾號 guolin_blog (郭霖)獨(dú)家發(fā)布 什么是使用記錄訪問權(quán)限呢?這是在Android...
    SheHuan閱讀 25,023評論 3 38
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評論 25 709
  • Android 是一個特權(quán)分離(privilege-separated)操作系統(tǒng),在其中每個應(yīng)用都以一個不同的系統(tǒng)...
    DanieX閱讀 4,181評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 周末要參加婚禮, 一個單身朋友晚上給我打電話, 說家里給他介紹了一位姑娘, 他打算約姑娘周六中午一起吃個飯, 見個...
    心徹閱讀 243評論 4 0

友情鏈接更多精彩內(nèi)容