2015-01-14 171 views
2

我想通過這次訪問Usage_Stats_Service在棒棒糖:沒有辦法訪問Context.USAGE_STATS_SERVICE

final UsageStatsManager usageStatsManager=(UsageStatsManager)this.getSystemService(Context.USAGE_STATS_SERVICE);

我可以去Context類,看看這個不斷存在,但Android Studio一直說它不是一個有效的常量。

我也嘗試過使用文字字符串,但似乎getSystemService有一個約束,只接受@ServiceName常量。

我花了差不多2個小時的時間才弄清楚什麼是髮髻。歡迎任何幫助。

+0

http://stackoverflow.com/questions/26698366/cant-use-lollipop-specific-classes-in-android-studio –

+0

授予我看見,試了一下在問之前。我清理了緩存等等,問題仍然存在。我認爲這是不是一個好的方法來回答一個問題,指出另一個沒有被接受的答案。 – Notbad

+0

我不回答你的問題(雖然我指出你回答問題,它是發佈答案的作者),我指的是與你的問題相同的材料,因爲你已經說過沒有設置它的任何內容除了其他。更新到android 0.8.14。使用Supress警告。更新sdk21。 Clearning並重建皮棉緩存 –

回答

3

Android Studio一直說它不是一個有效的常量。

這不是一個公開的常數,因爲USAGE_STAT_SERVICE使用在source code@hide標註隱藏。這由documentation中缺少USAGE_STAT_SERVICE來支持。

getSystemService有一個約束只接受@ServiceName 常數。

這是由於「屬性檢查」,應該不會影響編譯。它可以是turned off

我也成功地使用直接字符串獲得UsageManagerService的實例。

UsageStatsManager manager = (UsageStatsManager) getSystemService("usagestats"); 

此外,值得一提的是,permission required

android.permission.PACKAGE_USAGE_STATS 

簡單地由工作室標記爲(基於文檔技術上是真實的),不能被授予權限,以便工作室在此時間,不知道這些「特殊」權限。

使用權限可以

Settings > Security > Apps with usage access 
+1

我昨天使用直接字符串解決了這個問題,但必須刪除常量的屬性檢查。我認爲這個@hide在評論中與編譯文檔無關。 – Notbad

相關問題