Reputation: 3552
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:
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
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