2017-03-22 4 views
0

を与えています。アンドロイド6.0:UsageEventsメソッド「usageStatsManger.queryEventsは()」私は「<strong>UsageEvents</strong>」を使用してフォアグラウンドアクティビティをチェック</strong>する<strong>サービスを作成して、カウント0(ゼロ)

private void getForegroundActivity() { 
     String packageName = ""; 
     String className = ""; 
     Calendar cal_begin = Calendar.getInstance(); 
     cal_begin.set(Calendar.YEAR, -1); 
     long _begTime = cal_begin.getTimeInMillis(); 
     long _endTime = System.currentTimeMillis(); 
     UsageStatsManager usageStatsManager = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE); 

     if (usageStatsManager != null) { 
      UsageEvents queryEvents = usageStatsManager.queryEvents(_begTime, _endTime); 

      if (queryEvents != null) { 
       UsageEvents.Event event = new UsageEvents.Event(); 

       while (queryEvents.hasNextEvent()) { 
        UsageEvents.Event eventAux = new UsageEvents.Event(); 
        queryEvents.getNextEvent(eventAux); 

        if (eventAux.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) { 
         event = eventAux; 
        } 
       } 

       packageName = event.getPackageName(); 
       className = event.getClassName(); 
    } 

上記のコードは正常に動作し、適切なフォアグラウンド活動を与えるが、いくつかの時間後(のは2〜3時間後に言わせて)、「queryEvents(_begTime, _endTime)」戻り値 『0』(ゼロ)をカウント!!

usageStatsManager.queryEvents()サービスに使用する他の方法はありますか?

他のポインタ、アイデアは高く評価されています。

答えて

0

queryEvents()によって返されたイベントは、システムによって数日間のみ保持されます。したがって、それらの統計をローカルに維持するためにローカルデータベースを維持する必要があるかもしれません。あなたのコードに問題はありません。 queryEvents()方法とUsageStatsManagerの詳細については

、下のリンクをチェックアウト:

UsageStatsManager queryEvents

+0

を返信していただきありがとうございますが。私はqueryEvents()が数日間しかないことを知りませんでした。これについてどうお知りになりましたか? – user3132107

+1

私の更新された回答をチェックアウトしてください。 –

関連する問題

 関連する問題