2017-03-07 2 views
0

나는 forground 응용 프로그램 패키지 이름을 얻기 위해 아래에서이 코드를 시도했지만 내 응용 프로그램 응용 프로그램 패키지 이름 만 얻고 있습니다. 다른 응용 프로그램 packagte 이름은 null로 반환됩니다. 널 ... 내가 패키지 이름을 얻을 수있는 방법이 ..is getrunningappprocess을 알고 .I 다른 방법은 ...android에서 막대 사탕 버전 후 패키지 이름을 얻는 방법

(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
 
       List<ActivityManager.RunningAppProcessInfo> tasks = manager.getRunningAppProcesses(); 
 
       String mpackageName = tasks.get(0).processName; 
 
       UsageStatsManager usage = (UsageStatsManager) this.getSystemService(this.USAGE_STATS_SERVICE); 
 
       long time = System.currentTimeMillis(); 
 

 
       List<UsageStats> appList = usage.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time); 
 
       if (appList != null && appList.size() > 0) { 
 
        
 
        SortedMap<Long, UsageStats> runningTask = new TreeMap<Long, UsageStats>(); 
 
        
 
        for (UsageStats usageStats : appList) { 
 
         
 
         runningTask.put(usageStats.getLastTimeUsed(), usageStats); 
 
        } 
 
        if (!runningTask.isEmpty() && runningTask != null) { 
 
         mpackageName = runningTask.get(runningTask.lastKey()).getPackageName(); 
 
         
 
        } 
 
       } 
 

 

 
       for (int i = 0; pakageName != null && i < pakageName.size(); i++) { 
 
        Log.e("AppCheck", "comfor2 : " + mpackageName + " pak2 : " + pakageName.get(i)); 
 
        if (mpackageName.equals(pakageName.get(i))) { 
 
         
 
         currentApp = pakageName.get(i); 
 
         return true; 
 
        } 
 
       } 
 
      }

답변

1

가져 오기 클래스 이름 방법 아래에서 구글에 의해 차단

public static void classNameRunning(Context context) { 
    boolean isInBackground = true; 
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { 
     List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); 
     for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { 
      if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
       for (String activeProcess : processInfo.pkgList) { 
        if (activeProcess.equals(context.getPackageName())) { 
         // print log for class name 
        } 
       } 
      } 
     } 
    } else { 
     List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
     ComponentName componentInfo = taskInfo.get(0).topActivity; 
     if (componentInfo.getPackageName().equals(context.getPackageName())) { 
      Log.w("Package name ==> ",componentInfo.getPackageName()); 
     } 
    } 


} 
+0

이 코드는 다른 방법으로는 – Karthik

+0

쓰기 내 자신의 패키지 이름이 점점? –

+0

하지 working..is'getPackageName(). getClass()가'.. 도움이 될 수도 단지 – Karthik

1
public static HashSet<String> getRunningApps(Context context) { 
final HashSet<String> hashSet = new HashSet<String>(); 
final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
final PackageManager packageManager = context.getPackageManager(); 
List<RunningTaskInfo> runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 
for (RunningTaskInfo runningTaskInfo : runningTasks) { 
    String packageName = runningTaskInfo.baseActivity.getPackageName(); 
    try { 
     String appName = packageManager.getApplicationInfo(packageName, 0).loadLabel(packageManager).toString(); 
     hashSet.add(appName); 
    } catch (NameNotFoundException exception) { 
     // handle Exception 
    } 
} 
return hashSet; 
} 
관련 문제