问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-13 22:09

我来回答

5个回答

热心网友 时间:2023-07-31 01:49

Android开机启动Service,需要使用BroadcastReceiver,Android系统,开机会发送一个开机广播,可以通过BroadcastReceiver来接收开机广播。
具体代码:
1.在配置文件AndroidManifest.xml中向系统注册receiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

2.需要添加相应权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

3.在Receiver中就可以添加开机需要进行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

}
}

4.执行开机后的操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 这样即可开机启动Service了。
分享
本回答由电脑网络分类达人 孟男男认证
2015-02-05 18:47
#芝麻嘉年华,给你不一样的新春惊喜!#
提问者采纳
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- 开机启动 -->
<receiver android:name=".BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
public class BootBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

热心网友 时间:2023-07-31 01:50

1、首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service。import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class BootBroadcastReceiver extends BroadcastReceiver {//重写onReceive方法@Overridepublic void onReceive(Context context, Intent intent) {//后边的XXX.class就是要启动的服务Intent service = new Intent(context,XXXclass);context.startService(service);Log.v("TAG", "开机自动服务自动启动.....");}}配置xml文件,在receiver接收这种添加intent-filter配置<receiver android:name="BootBroadcastReceiver"<intent-filter<action android:name="android.intent.action.BOOT_COMPLETED"</action<category android:name="android.intent.category.LAUNCHER" /</intent-filter</receiver添加权限处理<!--此权限在高版本中可以省略,你可以测试--

热心网友 时间:2023-07-31 01:50

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

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

在AndroidManifest. xml中,首先加入 <uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED</uses-permission 来获得BOOT_COMPLETED的使用许可,然后注册前面重构的IntentReceiver类,在其 <intent-filter中加入<actionandroid:name=android.intent.action.BOOT_COMPLETED / ,以使其能捕捉到这个Action。一个例子xml:<uses-permission android:name=android.permission.RECEIVE_BOOT_COMPLETED</uses-permission <receiver android:name=.OlympicsReceiver android:label=@string/app_name <intent-filter <action android:name=android.intent.action.BOOT_COMPLETED / <category android:name=android.intent.category.LAUNCHER / </intent-filter </receiverjava:public class OlympicsReceiver extends IntentReceiver{/*要接收的intent源*/ static final String ACTION = android.intent.action.BOOT_COMPLETED; public void onReceiveIntent(Context context, Intent intent){if (intent.getAction().equals(ACTION)){context.startService(new Intent(context, OlympicsService.class), null);//启动倒计时服务 Toast.makeText(context, OlympicsReminder service has started!, Toast.LENGTH_LONG).show();}}}注意:现在的IntentReceiver已经变为BroadcastReceiver,OnReceiveIntent为onReceive。所以java这边的代码为: (也可以实现应用程序开机自动启动) public class OlympicsReceiver extends BroadcastReceiver{/*要接收的intent源*/ static final String ACTION = android.intent.action.BOOT_COMPLETED; public void onReceive(Context context, Intent intent){if (intent.getAction().equals(ACTION)){context.startService(new Intent(context, OlympicsService.class), null);//启动倒计时服务//这边可以添加开机自动启动的应用程序代码}}}


热心网友 时间:2023-07-31 01:51

Android中,当Service被kill后,如果重启需要使用BroadcastReceiver来实现,即广播接收者,例如利用BroadcastReceiver注册网络广播或者开关机广播,当接收到广播后直接启动service,这样就可以保证service被kill后,自动启动。
实现代码:
1.在配置文件AndroidManifest.xml中向系统注册BroadcastReceiver
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>

2.需要添加相应权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

3.在Receiver中就可以添加开机,或者网络状态改变后需要进行的操作
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

}
}
4.执行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 这样即可开机,或者网络状态改变后启动Service了。

热心网友 时间:2023-07-31 01:51

同问。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 封了怎么解封? 被微信封了,怎么解封? 封了怎么解封,已经不能登录 关于基金定投的收益率问题,我买了富国天利的一个月300 定投3年的基金定投,现在半年多了,收益率是1.2% 富国天利债券基金怎么样 现在会Java的人这个多,参加培训完还好找工作吗? 现在,电脑软件开发最习惯用什么语言? 祛痘印的有效方法是什麽 这条裙子怎么搭配衣服和鞋子 白色鞋,黑色裤子,黑色外套,外套里面配什么颜色比较好看? 比斯米俩是什么意思 黑色短袖黑色休闲裤配白鞋好看吗 “意思”这俩个字到底是什么意思,意思到底是什么意思 (如图)请问黑衣服白鞋子配什么裤子? 通常俩个八代表什么意思 一身黑衣搭配白鞋 手机根本没有前置摄像头,怎么自拍, 我手机有后置摄像头,没有前置摄像头阿,咋办 手机相机前摄像头没在了怎么回事 被土味情话撩中是一种什么样的感觉? Android怎么让一个service开机自动启动 Android如何实现开机自启动Service 如何使Android应用开机时自动启动 android service 开机启动后被什么情况下会被自动关闭掉? 很内涵高端的成语有哪些? 在三相对称的电路中总的有用功率等于线电压,线电压和功率因数三者相乘积3倍(请问这题哪里错了???) 形容高级的成语 在对称与不对称三相电路中,中线的作用有区别吗? 形容&quot;高级&quot;的词语有哪些? 在对称三相电路中,负载作三角形连接时,线电流是相电流的3倍,线电流的相位滞后相应的相电流30° 在图示对称三相电路中,已知电源线电压为380V,Z=80+j60Ω? 对称三相电路中三个相电流之和为零。 请问这句话对吗?为什么?分析下 对称的三相电路中各相电流大小相等,方向相反对吗? 对称三相电路中各相负载相同,各相电源也相同 对称三相电路中,当某一相开路时,其余两相负载获得的电压会比正常值大吗? 在三相对称电路中,电源的线电压为380V,每相负载电阻R=10欧。求星形连接时线电流和有功功率 三相对称电路是指 在对称的三相交流电路中视在功率s=s1+ s2+ s3是否成立?为什么? 在对称三相电路中,已知线电压Ul=380v,三相负载作星形连接,每相负载R=22欧姆,求线电压IL和三相负载总功 电路分析,对称三相电路中Z =10∠30°,A相相电流Iab=22∠-30°,求Ia,Uab=?