我已經可以檢測,如果服務其他應用程序啓動。我爲撥號程序製作了它。同樣可以被任何包名取代。
@Override
public int onStartCommand(Intent intent, int flags, int startId){
Toast.makeText(this,"Service Started", Toast.LENGTH_LONG).show();
final String str = "";
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
int phonelaunched = 0,phoneclosed =0;
int phonelaunches = 1;
@Override
public void run() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo appProcess: runningAppProcessInfo) {
Log.d(appProcess.processName.toString(),"is running");
if (appProcess.processName.equals("com.android.dialer")) {
if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND /*isForeground(getApplicationContext(),runningAppProcessInfo.get(i).processName)*/){
if (phonelaunched == 0){
phonelaunched = 1;
Log.d(str,"dude phone has been launched");
}
else if (phoneclosed == 1){
phonelaunches++;
phoneclosed = 0;
Log.d(String.valueOf(phonelaunches),"dude that was counter");
}
}
else {
phoneclosed = 1;
Log.d(str,"dude phone has been closed");
}
}
}
}
},2000,3000);
return START_STICKY;
}
這裏我會經歷所有正在運行的任務,並檢查它是否是我們的預期應用程序。如果是這樣,我檢查應用程序是否爲前景,並且應用程序永遠不會使用'phonelaunched'變量啓動。當預期的應用程序在後臺並且相應地設置變量時使用phoneclosed。
這一切都是服務類
你爲什麼要這麼做實現的?引用「**,以便我可以控制其上的流量**」這聽起來可能。 – t0mm13b 2012-07-05 14:43:42
我正在嘗試構建一個高中項目的應用程序。沒有惡意軟件。 :( – 2012-07-05 14:54:37
http://stackoverflow.com/questions/3290936/android-detect-when-other-apps-are-launched – SMR 2014-05-17 05:14:39