Android怎么让一个service开机自动启动

1.首先开机启动后系统会发出一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED,这个Action只会发出一次。

2.构造一个IntentReceiver类,重构其抽象方法onReceiveIntent(Context context, Intent intent),在其中启动你想要启动的Service。

3.在AndroidManifest.xml中,首先加入<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>来获得BOOT_COMPLETED的使用许可,然后注册前面重构的IntentReceiver类,在其<intent-filter>中加入<action android:name="android.intent.action.BOOT_COMPLETED" /> ,以使其能捕捉到这个Action。

一个例子
xml:

Java代码

  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
  2. <receiver android:name=".OlympicsReceiver" android:label="@string/app_name">
  3. <intent-filter>
  4. <action android:name="android.intent.action.BOOT_COMPLETED" />
  5. <category android:name="android.intent.category.LAUNCHER" />
  6. </intent-filter>
  7. </receiver>

[java] view plaincopy

  1. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
  2. <receiver android:name=".OlympicsReceiver" android:label="@string/app_name">
  3. <intent-filter>
  4. <action android:name="android.intent.action.BOOT_COMPLETED" />
  5. <category android:name="android.intent.category.LAUNCHER" />
  6. </intent-filter>
  7. </receiver>

java:

Java代码

  1. public class OlympicsReceiver extends IntentReceiver
  2. {
  3. /*要接收的intent源*/
  4. static final String ACTION = "android.intent.action.BOOT_COMPLETED";
  5. public void onReceiveIntent(Context context, Intent intent)
  6. {
  7. if (intent.getAction().equals(ACTION))
  8. {
  9. context.startService(new Intent(context,
  10. OlympicsService.class), null);//启动倒计时服务
  11. Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();
  12. }
  13. }
  14. }

[java] view plaincopy

  1. public class OlympicsReceiver extends IntentReceiver
  2. {
  3. /*要接收的intent源*/
  4. static final String ACTION = "android.intent.action.BOOT_COMPLETED";
  5. public void onReceiveIntent(Context context, Intent intent)
  6. {
  7. if (intent.getAction().equals(ACTION))
  8. {
  9. context.startService(new Intent(context,
  10. OlympicsService.class), null);//启动倒计时服务
  11. Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();
  12. }
  13. }
  14. }

注意:现在的IntentReceiver已经变为BroadcastReceiver,OnReceiveIntent为onReceive。所以java这边的代码为:

(也可以实现应用程序开机自动启动)

Java代码

  1. public class OlympicsReceiver extends BroadcastReceiver
  2. {
  3. /*要接收的intent源*/
  4. static final String ACTION = "android.intent.action.BOOT_COMPLETED";
  5. public void onReceive(Context context, Intent intent)
  6. {
  7. if (intent.getAction().equals(ACTION))
  8. {
  9. context.startService(new Intent(context,
  10. OlympicsService.class), null);//启动倒计时服务
  11. Toast.makeText(context, "OlympicsReminder service has started!", Toast.LENGTH_LONG).show();
  12. //这边可以添加开机自动启动的应用程序代码
  13. }
  14. }
  15. }
时间: 2024-10-07 23:06:45

Android怎么让一个service开机自动启动的相关文章

Android中实现开机自动启动服务(service)实例

最近在将 HevSocks5Client 移植到 Android 上了,在经过增加 signalfd 和 timerfd 相关的系统调用支持后,就可以直接使用 NDK 编译出 executable 了.直接的 native exectuable 在 Android 系统总还是不太方便用哦.还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的. Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pth

Android 开机自动启动服务

在前面的文章中提到了remote service 的创建过程,现在我们要让它开机自动启动 1.在前面代码的基础上添加 RemoteServiceBootReceiver.java ,实现一个intent的receiver [java] view plaincopyprint? package com.fly; import android.content.BroadcastReceiver; import android.content.Context; import android.conte

【Android开发日记】初次探秘Android Service!Service开机启动+重力感应+弹窗+保持运行

前言: 最近在写一个小程序,需求是手机摇一摇就弹窗出来.第一次使用了Service,学习了两天,实现了Service弹窗,开机启动,Activity启动和销毁.满足了自己的需求.现记录学习心得.希望能给你带来一些帮助. 1.Service创建:重写4个方法 onBind():返回一个IBinder对象,这个对象可以使应用程序与Service通信.如果用startService.stopService启动和关闭Service的话,Service和访问者是无法通信交换数据的.onBind()返回值设

如何让A20,android开机自动启动C程序【转】

本文转载自:http://blog.csdn.net/u011258134/article/details/50749174 如何让A20,android开机自动启动C程序 2014-12-26 11:32 557人阅读 评论(3)收藏 举报  分类: C语言学习(10)  作者同类文章X 版权声明:本文为博主原创文章,未经博主允许不得转载. ///  xinit  增加:  xinit    /usr/local/bin/xfreerdp  192.168.1.196 1,修改 android

Delphi XE开发 Android 开机自动启动

https://blog.csdn.net/tanqth/article/details/74357209 Android 下的广播 在Android下,要让我们开发的APP能在开机时自动启动,必须使用到Android系统下的广播.Android广播分为两个方面:广播发送者和广播接收者,通常情况下BroadcastReceiver指的是广播接收者(广播接收器). 要使广播生效必须先注册广播,实现注册就是告诉系统:要监听什么广播,和监听到之后要做什么动作完成什么工作(自定义广播重写onReceiv

Android开发之使用BroadcastReceiver实现开机自动启动(源代码分享)

上一节已经介绍过BroadcastReceiver实现实时监听电量的功能,这节就来介绍一下如果实现开机自动启动的功能,这个比监听电量还简单不少 (1)在清单文件注册权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> (2)实现  BroadcastReceiver接口 package com.example.g04_broadcastreciver04; import

Android开发 设置开机自动启动

原文:http://blog.csdn.net/kevinmeng_ini58/article/details/7700786 片段一: [html] view plaincopy <!-- 开机启动 --> <receiver android:name=".AutoStartReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMP

ubuntu开机自动启动chromium os下chroot中的脚本

这篇文章记录了在ubuntu(12.04)下开机自动启动一个chromium os中的脚本所遇到的问题及解决办法. chromium os是Google的一个开源操作系统,在src/platform/factory/py/shopfloor目录下是一些控制生产测试的脚本,通过在chroot下执行./shopfloor_server.py -m cros.factory.shopfloor.target_shopfloor来启动特定的生产测试程序. 现在需要target_shopfloor能在开机

Android -- 利用Broadcast开启Service

Broadcast和Service都是Android四大组建之一的. 这里的广播是动态的,自己注册的一个广播. 这种最典型的用法就是利用开机广播,然后再起自己的服务,也就是在Android手机中做到开启启动. Service与Broadcast                                                                 public class MyService extends Service { private MyReceiver rec