Android 能不能监听到第三方应用App的启动和退出

Android 能不能监听到第三方应用App的启动和退出,第1张

在Android中,Activity有个栈,一个Activity结束掉,会回到上一个Activity,并不是退出应用程序

Android中,退出应用程序的方式:

1.通过pid

int pid = android.os.Process.myPid() //获取当前应用程烂逗序的PID

android.os.Process.killProcess(pid) //杀死当前进程

这种方法退出应用,是会保留某些后进程,例如:Service,Notifications等。

2.通并历橘过ActivityManager

ActivityManager manager = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE)//获取应用程序管理器

manager.killBackgroundProcesses(getPackageName())//强制结束当前应用程序

这种方式退出应用,会结束本应用程序的一切活动,因为本方法会根据应用程序的包名杀死所有进绝团程包括Activity,Service,Notifications等。

用一个服务在后台,一直循环,判断当前activity栈顶与自己想要监控的程序是否相同就行了...

查看一下ActivityManager类里面有

ActivityManager.MemoryInfo: 系统可用内存信息

ActivityManager.RecentTaskInfo: 最近的任务信息

ActivityManager.RunningAppProcessInfo: 正镇谈在运行的进程信息

ActivityManager.RunningServiceInfo: 正在运行的服务信息

ActivityManager.RunningTaskInfo: 正在运行的任务信息友纯

自已想一下,就明白了,再好旅咐不懂上网找一下ActivityManager怎么用就行了

安装自启动:

要做这个功能有一个前提,那就是用户的机器上已经装过相应应用,也就是说只有升级APK的时候才可以这么干,因为要执行的功能需要程序的配旅芹唤合。

具体步骤如下:

首先要知道程序已经安装完成,所以需要在程序中注册一个广播监听(必须是静态的,你懂的)apk安装完成的action:"android.intent.action.PACKAGE_ADDED",在这个广播的onReceive方法中监听action,并通过intent.getDataString()方法判断安装程序的包名是否属于自己的包名,如果是做下一步 *** 作;

通过Intent显式或者隐式的启动你自己的程序。

建议:

  最好拆凯不要这样干,你要考虑一下用户的感受,特别是那种自动安装不需要点确认的时候,正在玩游戏、看视频、看小说、用微信你自动打开一个应用

开机自启动

android实现开机自启动可能是移动 *** 作系统中最简单的了,只需要监听一个开机启动的Broadcast(广播)即可。首先写一个Receiver(即广播监听器),继承BroadcastReceiver。

如下所示:

public class BootReceiver extends BroadcastReceiver {

private PendingIntent mAlarmSender

@Override

public void onReceive(Context context, Intent intent) {

// 在这里干你想干的事(启动一个Service,Activity等),本例是启动一个定时调度程序,每30分首粗钟启动一个Service去更新数据

mAlarmSender = PendingIntent.getService(context, 0, new Intent(context,

RefreshDataService.class), 0)

long firstTime = SystemClock.elapsedRealtime()

AlarmManager am = (AlarmManager) context

.getSystemService(Activity.ALARM_SERVICE)

am.cancel(mAlarmSender)

am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

30 * 60 * 1000, mAlarmSender)

}

}

接下来,只需要在应用程序配置文件AndroidManifest.xml中注册这个Receiver来监听系统启动事件即可

如下所示:

<receiver android:name=".service.BootReceiver">

<intent-filter>

<!-- 系统启动完成后会调用-->

<action android:name="android.intent.action.BOOT_COMPLETED">

</action>

</intent-filter>

</receiver>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12495052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存