如何在启动新应用程序时启动服务?

时间:2014-04-26 03:31:47

标签: java android

每当在Android设备上启动新应用程序时,我想运行一个服务。

我正在为Android系统构建基于行为的防病毒软件。它通过收集应用程序的系统调用跟踪来工作。一切都很好,除了,我如何安排服务运行,以涵盖所有应用程序。一种方法是,我计划以特定的间隔运行它。但是,更合乎逻辑的是每次启动新应用程序时都要运行它。一旦启动该服务将收集正在运行的应用程序的系统调用数据(我使用strace程序)通过网络将数据发送到远程服务器,进行所有处理,并终止。有关如何实现此目的的任何提示(在新应用程序启动时运行服务)以编程方式提交(是的,我在发布此问题之前已进行了大量搜索)?

我对Android没有太多经验。有什么其他方法可以在安卓时安装所有应用程序吗?

1 个答案:

答案 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" />