Akhilesh Mani
Akhilesh Mani

Reputation: 3552

find application running in foreground from service

I want to find application running in foreground from my Service class. I had used RunningAppProcessInfo.IMPORTANCE_FOREGROUND to detect it. But following problems arises:

  1. Its gives many application status in foreground.
  2. If I open any application , then it not shows its package name .

Code:

 public class TapCountService extends Service{

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub
    List<RunningAppProcessInfo> procInfos=getRunningAps();
    int loop=0;
    for (RunningAppProcessInfo runningAppProcessInfo : procInfos) {
        Toast.makeText(TapCountService.this, procInfos.get(loop).processName, Toast.LENGTH_SHORT).show();
        System.out.println("Process Name=====>"+procInfos.get(loop).processName);
        if(procInfos.get(loop).importance== RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
            Toast.makeText(TapCountService.this, procInfos.get(loop).processName, Toast.LENGTH_SHORT).show();
        } 
        ++loop;
    }
    return super.onStartCommand(intent, flags, startId);
}

/**
 * This method returns list of running application.
 * @return List<RunningAppProcessInfo>: containing application informations.
 */
private List<RunningAppProcessInfo> getRunningAps(){
    ActivityManager actvityManager = (ActivityManager)this.getSystemService( ACTIVITY_SERVICE );
    List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
    return procInfos;
}

}

Upvotes: 1

Views: 4823

Answers (1)

Selim Raza
Selim Raza

Reputation: 497

Use this code in Service to get foreground apps and take your own task.

 try {
            ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
            List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();

            //   final String packageName = context.getPackageName();
            for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
                //   if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals()) {
                if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                    Log.i("Foreground App", appProcess.processName);
                    String B2MAppsPKGName = appProcess.processName;

                    ////////Select Package name From SQLite DataBase//////////

                    OurStoreAppsPackages = new ArrayList<String>();
                    OurStoreAppsPackages = databaseHelper.getOurAllAppsPackage();

                    if (OurStoreAppsPackages.contains(B2MAppsPKGName)) {
                        //  if (storedPackageName == true) {
                        Log.i("DatabaseForeground App", B2MAppsPKGName);

                        ////// Go to GameStartPage page ./////////
                        Intent ii = new Intent(this, GameStartPage.class);
                        ii.putExtra("pkgName", B2MAppsPKGName);
                        ii.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(ii);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

Upvotes: 2

Related Questions