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;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值