Получить имя пакета приложений, которые в данный момент работают в Android - PullRequest
1 голос
/ 12 июля 2011

Может ли кто-нибудь помочь мне с примером кода при получении имен пакетов действий, которые в данный момент выполняются в Android?

Отредактировано:

Код 1

    ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> processes = am.getRunningAppProcesses();
    if (processes != null){
        for (int i=0; i<processes.size(); i++){
            RunningAppProcessInfo temp = processes.get(i);
            String pName = temp.processName;
            for (int k=0; k<blacklist.size(); k++){
                if (pName.equalsIgnoreCase((String)blacklist.get(k))){
                    int pid = android.os.Process.getUidForName(pName);
                    android.os.Process.killProcess(pid);
                }
            }
     }

Код 2?

  int pid = temp.pid;
    String[] packages = temp.pkgList;
            for (int j=0; j<packages.length; j++){
                String packageName = packages[j];
                for (int k=0; k<blacklist.size(); k++){
                    if (packageName.equalsIgnoreCase((String)blacklist.get(k))){
                        //Android 2.2+ kill all background processes
                        am.killBackgroundProcesses(packageName);
                    }
                }
            }

Предполагая, что черный имеет имя пакета приложения программы, которую я занес в черный список и хочу завершить.Какой из приведенного выше кода является правильным способом реализации моей задачи убийцы.Может кто-нибудь объяснить разницу между killBackgroundProcesses (packageName) и android.os.Process.killProcess (pid), поскольку я не могу понять разницу между ними.

Ответы [ 3 ]

1 голос
/ 12 июля 2011

Вы можете использовать getRunningAppProcesses на Android ActivityManager , чтобы получить список запущенных процессов.

Проверьте эту ссылку: http://developer.android.com/reference/android/app/ActivityManager.html#getRunningAppProcesses%28%29

Вы можете использовать метод getInstalledPackages на Android PackageManager , чтобы получить список всех установленных приложений

Проверьте эту ссылку: http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstalledPackages%28int%29

0 голосов
/ 28 июля 2016

API сначала 20, а затем используйте приведенный ниже код, чтобы определенно работать.Я использую этот код и работаю правильно.Попробуй

String currentApp=null;
    UsageStatsManager usm= (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
    long time=System.currentTimeMillis();
    List<UsageStats> applist=usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,time - 1000*1000,time);
    if(applist !=null && applist.size() > 0)
    {
        SortedMap<Long,UsageStats> mySortedMap=new TreeMap<Long,UsageStats>();
        for (UsageStats usageStats : applist)
        {
            mySortedMap.put(usageStats.getLastTimeUsed(),usageStats);

        }
        if(mySortedMap != null && !mySortedMap.isEmpty())
        {
            currentApp=mySortedMap.get(mySortedMap.lastKey()).getPackageName();
        }
    }
    Log.e(TAG, "Current App in foreground is: " + currentApp);

    return currentApp;
0 голосов
/ 26 февраля 2015
        ActivityManager am =(ActivityManager)context.getSystemService(ACTIVITY_SERVICE);
  List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
  ActivityManager.RunningTaskInfo task = tasks.get(0); // current task
   ComponentName rootActivity = task.baseActivity;


      rootActivity.getPackageName();//*currently active applications package name*

используя это в цикле, вы получите имя пакета всех запущенных в данный момент приложений, чтобы узнать имя запущенного приложения, посмотрите это ПРИМЕР

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...