2015-03-29 3 views
1

Я разрабатываю приложение, которое требует проверки того, работает ли какое-либо приложение. Я использую следующий код, но он всегда говорит мне, используя сообщение Toast, что приложение, которое, кстати, работает, не является. используетсяКак проверить, работает ли конкретное приложение или нет в Android

Код для функции:

boolean isNamedProcessRunning(String processName){ 
    if (processName == null) 
    return false; 

    ActivityManager manager = 
    (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
    List<RunningAppProcessInfo> processes = manager.getRunningAppProcesses(); 
    for (RunningAppProcessInfo process : processes) 
    { 
    if (processName.equals(process.processName)) 
    { 
     return true; 
    } 
    } 
    return false; 
} 

Вызов функции:

if(isNamedProcessRunning("WhatsApp")){ 
    Toast.makeText(this.getBaseContext(),"WhatsApp running", Toast.LENGTH_SHORT).show(); 
} 
else{ 
    Toast.makeText(this.getBaseContext(),"WhatsApp Not running", Toast.LENGTH_SHORT).show(); 

} 
+0

попробуйте напечатать все manager.getRunningAppProcesses() и проверить актуальное имя, это действительно просто ... вы можете проверить имя процесса: 'if (processName.contains (process.processName))' –

+0

Этот API - о котором вы всегда предупреждали, в зависимости от - теперь устарели, вы не должны ожидать, что он будет работать над последними релизами или в будущем. Цель проекта заключается в том, что * вы не должны быть в состоянии узнать, что еще работает *, поскольку эта информация подвергалась злоупотреблениям плохо продуманными приложениями. И «бег» имеет мало значения для Android для начала. –

ответ

2

Обычно приложение названия процесса, как имена пакетов "com.android.example", например «com.android .pandora». Вы пытались «com.whatsapp» или «com.android.whatsapp»?

В цикле напечатайте все процессы, чтобы убедиться, что вы правильно получили имя процесса whatsapp.

+0

Да, его работа. Благодаря! –

Смежные вопросы