安装自启动:
要做这个功能有一个前提,那就是用户的机器上已经装过相应应用,也就是说只有升级APK的时候才可以这么干,因为要执行的功能需要程序的配合。
具体步骤如下:
首先要知道程序已经安装完成,所以需要在程序中注册一个广播监听(必须是静态的,你懂的)apk安装完成的action:"androidintentactionPACKAGE_ADDED",在这个广播的onReceive方法中监听action,并通过intentgetDataString()方法判断安装程序的包名是否属于自己的包名,如果是做下一步 *** 作;
通过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 = PendingIntentgetService(context, 0, new Intent(context,
RefreshDataServiceclass), 0);
long firstTime = SystemClockelapsedRealtime();
AlarmManager am = (AlarmManager) context
getSystemService(ActivityALARM_SERVICE);
amcancel(mAlarmSender);
amsetRepeating(AlarmManagerELAPSED_REALTIME_WAKEUP, firstTime,
30 60 1000, mAlarmSender);
}
}
接下来,只需要在应用程序配置文件AndroidManifestxml中注册这个Receiver来监听系统启动事件即可
如下所示:
<receiver android:name="serviceBootReceiver">
<intent-filter>
<!-- 系统启动完成后会调用-->
<action android:name="androidintentactionBOOT_COMPLETED">
</action>
</intent-filter>
</receiver>
android程序强行关闭后,让程序自动启动的方法为:
1、自己建一个service,不断的去判断,如果Activity挂掉了,就在service里启动它。
2、在程序里面写个广播什么的到程序里面 ,比如 一些apk程序。一检测到wifi开启,广播就激发,启动程序。
Android系统通过应用程序自行在系统中登记注册事件(即Intent)来响应系统产生的各类消息。
例如Android实现系统开机自启动程需要在Manifest中加入如下Intent-filter及权限Uses-permission即可。
<intent-filter>
<action android:name="androidintentactionBOOT_COMPLETED"/>
(修改时候主要是去掉上面该行即可)
<category android:name="androidintentcategoryHOME" />
</intent-filter>
<uses-permission android:name="androidpermissionRECEIVE_BOOT_COMPLETED"/>
(修改时候主要是去掉上面该行即可) Android系统为应用程序管理功能提供了大量的API,可以通过API控制Intent和permission,其中
上述配置表示应用程序会响应系统产生的androidintentactionBOOT_COMPLETED(系统启动完成)信号,以此来实现应用程序自启动。当然知道上述原理后,我们就可以随心所欲的控制程序开机自启动了。具体思路如下:
一、手工方法
基于上述原理,我们可以通过对系统中已安装的程序去除其Manifest的上述配置片段来控制应用程序的对系统的响应,当然没源码可修改编译的情况下只能实现屏蔽其对有些信号的响应,例如屏蔽该程序不再开机自启动。手工方法就是利用有关工具直接在解压其APK包后,修改其Manifest的上述配置行后再打包成APK,最后安装到系统中就实现了屏蔽其自启动功能。具体相关的工具软件主要有APKTOOL。(请自己放狗去搜索下载)
二、编程实现
当然手工方法需要借助APKTOOL等工具,步骤比较法繁琐,我们可以通过自己开发来实现该功能。幸好
1、PackageManager
本类API是对所有基于加载信息的数据结构的封装,包括以下功能:
·安装,卸载应用
·查询permission相关信息
·查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
·查询已安装应用
·增加,删除permission
·清除用户数据、缓存,代码段等
非查询相关的API需要特定的权限,具体的API请参考SDK文档。
2、ActivityManager相关
本类API是对运行时管理功能和运行时数据结构的封装,包括以下功能
·激活/去激活activity
·注册/取消注册动态接受intent
·发送/取消发送intent
·activity生命周期管理(暂停,恢复,停止,销毁等)
·activity task管理(前台->后台,后台->前台,最近task查询,运行时task查询)
·激活/去激活service
·激活/去激活provider等
task管理相关API需要特定的权限,具体API可参考SDK文档。
上电之后到U-boot的流程
暂不关心CP的启动,而主要关心AP
Android启动流程——1序言、bootloader引导与Linux启动
翻译自: >
前段时间在做智能机器人等定制android系统开发的应用,因为机器人定制应用,需要在系统启动的时候就运行程序,不需要展示系统桌面,这里需要用到系统开机应用自启动,也就是常说的开机自启动。
记录一下实现流程:
在AndroidManifestxml文件中配置监听启动权限
新建一个监听广播接收者BootReceiver
安装app到手机上,然后启动一次程序(据说安卓40以后,必须先启动一次程序才能接收到开机完成的广播,目的是防止恶意程序)
如果按照上面的全部步骤后 *** 作后,重启没有自动启动程序,怎么办呢?是怎么回事呢?
如果还是失败,那么请检查你的手机是不是设置了app安装首选位置是sd卡,据说安装到sd卡的话,因为手机启动成功后(发送了启动完成的广播后)才加载sd卡,所以app接收不到广播。如果是的话,把app安装到内部存储试试。如果不懂得设置的话,那么直接在AndroidManifestxml文件中设置安装路径,在manifest的根节点中加入 android:installLocation="internalOnly" 。如下:
以上就是关于android 怎么自启动应用全部的内容,包括:android 怎么自启动应用、android程序强行关闭后,怎样让程序自动启动、android怎么设置开机启动软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)