2

в моем приложении мне нужно запустить другое приложение, только если оно еще не запущено.Как запустить приложение из другого приложения

Чтобы запустить приложение, что я делаю это:

PackageManager pm = getPackageManager();   
Intent intent = pm.getLaunchIntentForPackage("package.of.app.to.launch"); 
startActivity(intent); 

Моя проблема заключается в том, что если приложение уже запущен, он принесет приложение к фронту. Как я могу запустить приложение, только если его нет в активных и запущенных приложениях? благодаря!

+0

Не могли бы вы еще раз уточнить свой вопрос, это очень запутанно сейчас. – Anupam

+0

@Anupam: Это так запутанно. –

+0

Целевое приложение, это ваше собственное? Можете ли вы изменить его манифест? – varevarao

ответ

0

Вы можете использовать ActivityManager получить запущенные приложения и получить в последнее задание выполняется на устройстве, как:

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

    for (int i = 0; i < recentTasks.size(); i++) 
    { 
     // Here you can put your logic for executing new task   
    } 
0

Если вы хотите знать, является ли приложение работает или нет, вы должны взглянуть на getRunningTasks

Также этот post может вам помочь.

2

Вы можете получить список всех работающих или активных приложений, а затем проверить, находится ли в нем приложение, которое вы хотите запустить.

ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningAppProcessInfo> runningProcInfo = activityManager.getRunningAppProcesses(); 
for(int i = 0; i < runningProcInfo.size(); i++){ 
     if(runningProcInfo.get(i).processName.equals("package.of.app.to.launch")) { 
      Log.i(TAG, "XXXX is running"); 
     } else { 
      // RUN THE CODE TO START THE ACTIVITY 
     } 
} 
0

вы можете получить то, что деятельность работает

List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
String currentActivity=taskInfo.get(0).topActivity.getPackageName(); 

затем проверить

if(currentActivity!=(your activity)) 
{ 
    **your intent** 
} 
else{ 
"app already running" 
} 

надеюсь, что это помогает. спасибо

+0

вам нужно разместить полный код ... (т. Е. 'Am' вы использовали). – Riad

+0

ActivityManager am; –

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