Как проверить запущенное имя приложения? [Дубликат]

Другие два варианта:

Базовый пакет:

df <- unstack(dat1, form = value ~ numbers)
rownames(df) <- unique(dat1$name)
df

sqldf package:

library(sqldf)
sqldf('SELECT name,
      MAX(CASE WHEN numbers = 1 THEN value ELSE NULL END) x1, 
      MAX(CASE WHEN numbers = 2 THEN value ELSE NULL END) x2,
      MAX(CASE WHEN numbers = 3 THEN value ELSE NULL END) x3,
      MAX(CASE WHEN numbers = 4 THEN value ELSE NULL END) x4
      FROM dat1
      GROUP BY name')
14
задан Rob Hruska 11 November 2011 в 14:59
поделиться

4 ответа

ActivityManager activity_manager = (ActivityManager) context
                .getSystemService(Activity.ACTIVITY_SERVICE);

ActivityManager имеет метод getRunningTasks(int). ActivityManager похоже на решение, которое вы ищете.

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

for (int i = 0; i < recentTasks.size(); i++) 
{
    Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+"");         
}

Также посмотрите следующий поток: См. недавнюю задачу Android, выполненную пользователем

21
ответ дан Community 22 August 2018 в 11:17
поделиться
  • 1
    Метод getRunningTasks(int maxNum) был устарел на уровне API 21 (LOLLIPOP) по соображениям безопасности, возможности утечки личной информации в сторонние приложения. (Если вы используете этот метод, помните, что он не будет поддерживаться для будущих версий Android). – Fernando Leal 12 January 2015 в 16:41
  • 2
    Кто-нибудь нашел обходное решение, которое действительно работает для того, чтобы делать то же самое, что и getRunningTasks (int maxNum)? Большое спасибо! – Leo Melo 22 October 2015 в 19:18
  • 3
    где я должен поставить код выше? Я пытаюсь поместить код в onCreate, и он просто показывает MainActivity, даже я пытаюсь открыть другое приложение. Он также просто показывает MainActivity, даже если я поместил код в метод run () класса сервиса – RiefSapthana 22 May 2018 в 12:50

Вы можете использовать что-то похожее на это:

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

for (int i = 0; i < tasks.size(); i++) {
    Log.d("Running task", "Running task: " + tasks.get(i).baseActivity.toShortString() + "\t\t ID: " + tasks.get(i).id);
}
8
ответ дан Caner 22 August 2018 в 11:17
поделиться
  • 1
    Спасибо всем за ваш повтор. Из приведенного выше кода я могу получить текущую текущую информацию о приложениях, когда я открываю приложение. Как я могу это сделать, прерывая другое приложение, мое приложение должно получать текущую информацию, и она должна отображать ее в logcat. если какой-то орган знает, пожалуйста, помогите, я изо всех сил пытаюсь это сделать. – pushpa 11 November 2011 в 16:49
  • 2
    как я могу найти значок для текущего запуска приложения? – user3233280 23 November 2014 в 19:04

Этот код предоставит текущий logcat активности

Process logcatProc;
List <String> progs = new ArrayList <String>();

progs.add("logcat");
progs.add("-v");
progs.add(mFormat.getValue());
if (mBuffer != Buffer.MAIN) {
        progs.add("-b");
        progs.add(mBuffer.getValue());
}
progs.add("*:" + mLevel);

logcatProc = Runtime.getRuntime()
                .exec(progs.toArray(new String[0]));

mReader = new BufferedReader(new InputStreamReader(
                logcatProc.getInputStream()), 1024);

String line;
while (mRunning && (line = mReader.readLine()) != null) {
    if (!mRunning) {
            break;
    }
    if (line.length() == 0) {
            continue;
    }
    if (mIsFilterPattern) {
        if (mFilterPattern != null && !mFilterPattern.matcher(line).find()) {
            continue;
        }
    } else {
        if (mFilter != null && !line.toLowerCase().contains(mFilter.toLowerCase())) {
            continue;
        }
    }
    synchronized (mLogCache) {
            mLogCache.add(line);
    }
}
1
ответ дан Jared Rummler 22 August 2018 в 11:17
поделиться

ActivityManager :: getRunningTasks(int) устарел с API 21. Дополнительная информация здесь .

0
ответ дан Toochka 22 August 2018 в 11:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: