Service クラスからフォアグラウンドで実行されているアプリケーションを見つけたいです。私は RunningAppProcessInfo.IMPORTANCE_FOREGROUND
それを検出するために使用していました。しかし、次の問題が発生します。
- フォアグラウンドで多くのアプリケーション ステータスを表示します。
- アプリケーションを開くと、そのパッケージ名が表示されません。
コード:
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;
}
}