마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

앱 실행시간 가져오기 UsageStatsManager

0 추천

 

앱 정보에 보니까 해당 앱을 오늘 사용한 시간이 나오는데 이 값을 가져오려면 어떻게 해야하죠?

UsageStatsManager를 이용한 방법이 있어서 사용해봤는데 for문 내부가 실행되질 않네요...

 

String PackageName = "";
long TimeInforground = 500;
int minutes = 500, seconds = 500, hours = 500;
@SuppressWarnings({"ResourceType"})
UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats");
long time = System.currentTimeMillis();
Log.d("WTF", "1");

List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time);
if (stats != null) {
   Log.d("WTF", "2" + stats.toString());
   for (UsageStats usageStats : stats) {
      Log.d("WTF", "3");
      TimeInforground = usageStats.getTotalTimeInForeground();
      PackageName = usageStats.getPackageName();
      hours = (int) ((TimeInforground / (1000 * 60 * 60)) % 24);
      minutes = (int) ((TimeInforground / (1000 * 60)) % 60);
      seconds = (int) (TimeInforground / 1000) % 60;
      Log.d("WTF", "PackageName is" + PackageName + "Time is: " + hours + "h" + ":" + minutes + "m" + seconds + "s");
   }
}
성래 (190 포인트) 님이 2021년 4월 15일 질문

1개의 답변

0 추천

API 문서를 보니까 아래처럼 나와 있네요.

NOTE: Most methods on this API require the permission android.permission.PACKAGE_USAGE_STATS. However, declaring the permission implies intention to use the API and the user of the device still needs to grant permission through the Settings application. See Settings.ACTION_USAGE_ACCESS_SETTINGS. Methods which only return the information for the calling package do not require this permission. E.g. getAppStandbyBucket() and queryEventsForSelf(long, long).

AndroidManifest.xml에 anroid.permission.PACKAGE_USAGE_STATE를 세팅해 주셔야 하고, 사용자가 Setting에서 관련된 옵션을 활성화 시켜주어야 한다고 하네요. package 정보를 구하는 데에는 권한이 굳이 필요는 없는 것 같구요.

spark (225,780 포인트) 님이 2021년 4월 15일 답변
...