Android程序監聽已知包名的APK是否運行

最新項目中用到了自己的客戶端要監聽在自己客戶端裏下載的APK是否在運行,整理下基本實現代碼


我是用定時器調用個BroadcastReceiver來實現


BroadcastReceiver類中自己重寫onReceive方法就可以了


public class Tools {

private static long time = 10*1000; //定時器頻率
private static String pck;
private static long totalTime;
private static long percentTime;
// 發送定時廣播 服務器傳時間單位秒
public static void setSchedule(Context context,String pack,int totaltimes) {
pck = pack;
totalTime = totaltimes*1000;
percentTime = 0;
Intent intent = new Intent(context, alarmreceiver.class);
intent.setAction("repeating");
PendingIntent sender = PendingIntent
.getBroadcast(context, 0, intent, 0);
long firstime = SystemClock.elapsedRealtime();// 開始時間
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,
time, sender);// 10秒一個週期,不停的發送廣播
}


// 取消定時器
public static void cancleSchedule(Context context) {
Intent intent = new Intent(context, alarmreceiver.class);
intent.setAction("repeating");
PendingIntent sender = PendingIntent
.getBroadcast(context, 0, intent, 0);
AlarmManager alarm = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(sender);
}
//判斷監聽已知包名的程序是否運行
public static void getinfoisrunning(Context context) {
ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> listOfProcesses = mActivityManager
.getRunningAppProcesses();

for (ActivityManager.RunningAppProcessInfo process : listOfProcesses) {
Log.e("Process Running", process.processName);
if (process.processName.contains(pck)) {
System.out.println("正在運行");
Toast.makeText(context, "正在運行程序", Toast.LENGTH_SHORT).show();
if(percentTime == totalTime){
System.out.println("獲得獎勵...............");
}
percentTime = percentTime + time;
break;
}

System.out.println("percentTime==="+percentTime);
System.out.println("time===="+time);
if(percentTime>=time){
System.out.println("停止運行取消獎勵...........");
cancleSchedule(context);
percentTime = 0;
break;
}
}
percentTime = percentTime + time;
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章