每当在Android设备上启动新应用程序时,我想运行一个服务。
我正在为Android系统构建基于行为的防病毒软件。它通过收集应用程序的系统调用跟踪来工作。一切都很好,除了,我如何安排服务运行,以涵盖所有应用程序。一种方法是,我计划以特定的间隔运行它。但是,更合乎逻辑的是每次启动新应用程序时都要运行它。一旦启动该服务将收集正在运行的应用程序的系统调用数据(我使用strace程序)通过网络将数据发送到远程服务器,进行所有处理,并终止。有关如何实现此目的的任何提示(在新应用程序启动时运行服务)以编程方式提交(是的,我在发布此问题之前已进行了大量搜索)?
我对Android没有太多经验。有什么其他方法可以在安卓时安装所有应用程序吗?
答案 0 :(得分:1)
无法检测应用启动。在应用启动时,您没有任何broadcast receiver
意图通知。
您可以在service
device boot
上启动receiver
并查找正在运行的应用程序。
编写自定义接收器以启动此服务
public class CustomReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context,CustomService.class));
}
}
并在Manifest中注册启动完成。
<receiver android:name="com.stackwork.app.services.CustomReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
此外,添加接收启动完成广播的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />