- 浏览: 321374 次
最新评论
-
ax003d:
你好,我使用这种方法,在gridview里显示图片,当图片数量 ...
ScrollView嵌套GridView、ListView的解决办法 -
yunzhu:
Firefox下有Xmarks书签同步插件,很好用,可以方便地 ...
开发人员应该具备的工具----欲善其事,先利其器 -
mjlixm:
Android入门:ContentProvider 学习了! ...
Android入门:ContentProvider -
bluesky329:
很好收益匪浅!
一个软件工程师的经验之谈 -
qinglongyun:
每天工作4小时的程序员
在使用智能手机的时候,有些程序是一直伴随这我们的,或者说是需要实时反馈和交互的,例如我们手机的主题界面,闹钟程序等等。对于这些程序,我们自然而然的会希望他们能够开机自启动,因为这样子可以避免忘记手动开启某些程序,例如日常闹钟等等,并且省了很多繁琐的事情。
正如高焕堂先生总结Android框架时所说的“Don'tcall me, I'll call you back!”,在Android中,不同组件之间的调用往往是基于消息触发,而不是简单的事件调用。在Android中,广播机制也很好的贯彻了这个思想。下面这个程序,将会演示如何利用BroadcastReceiver来实现Activity和Service的开机自启动。
实现原理:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。所以,只要在BroadcastReceiver接收到该消息时,创建并启动相应的Activity和Service即可实现。
在该程序中,将创建一个BroadcastReceiver类BootBroadcastReceiver、一个Activity类StartOnBootActivity、一个Service类StartOnBootService。程序的示例程序的代码如下,重点代码的注解见代码中注释部分:
(1)配置文件“AndroidManifest.xml”
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="lulicheng.android.onboot" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" > </uses-permission> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".StartOnBootActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".StartOnBootService" > </service> <receiver android:name=".BootBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="lulicheng.android.onboot" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" > </uses-permission> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".StartOnBootActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".StartOnBootService" > </service> <receiver android:name=".BootBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest>
在该配置文件中,配置了各个组件的基本参数,在使用权限中需要加入“<uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED" >”权限,另外还有一点比较重要的就是在BootBroadcastReceiver中添加intent-filter,如此一来BootBroadcastReceiver的onReceiver方法才能被触发。
(2)广播监听类“BootBroadcastReceiver”
package lulicheng.android.onboot; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootBroadcastReceiver extends BroadcastReceiver { // 系统启动完成 static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { // 当收听到的事件是“BOOT_COMPLETED”时,就创建并启动相应的Activity和Service if (intent.getAction().equals(ACTION)) { // 开机启动的Activity Intent activityIntent = new Intent(context, StartOnBootActivity.class); activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 启动Activity context.startActivity(activityIntent); // 开机启动的Service Intent serviceIntent = new Intent(context, StartOnBootService.class); // 启动Service context.startService(serviceIntent); } } } (3)“StartOnBootActivity” package lulicheng.android.onboot; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class StartOnBootActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置Activity的显示内容为一个文本域 TextView aTextView = new TextView(this); aTextView.setText("Wow!I started after cellphone boot."); setContentView(aTextView); } } (4)“StartOnBootService” package lulicheng.android.onboot; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast; public class StartOnBootService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); // Service被启动时,将会有弹出消息提示[MyService onStart] Toast.makeText(this, "[MyService onStart]", Toast.LENGTH_LONG).show(); } } package lulicheng.android.onboot; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootBroadcastReceiver extends BroadcastReceiver { // 系统启动完成 static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { // 当收听到的事件是“BOOT_COMPLETED”时,就创建并启动相应的Activity和Service if (intent.getAction().equals(ACTION)) { // 开机启动的Activity Intent activityIntent = new Intent(context, StartOnBootActivity.class); activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 启动Activity context.startActivity(activityIntent); // 开机启动的Service Intent serviceIntent = new Intent(context, StartOnBootService.class); // 启动Service context.startService(serviceIntent); } } } (3)“StartOnBootActivity” package lulicheng.android.onboot; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class StartOnBootActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置Activity的显示内容为一个文本域 TextView aTextView = new TextView(this); aTextView.setText("Wow!I started after cellphone boot."); setContentView(aTextView); } } (4)“StartOnBootService” package lulicheng.android.onboot; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast; public class StartOnBootService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); // Service被启动时,将会有弹出消息提示[MyService onStart] Toast.makeText(this, "[MyService onStart]", Toast.LENGTH_LONG).show(); } }
程序实现后,在手机或者模拟器上面安装,然后重启机器,就能在开机进入系统之后看到该Activity界面以及Service的弹出消息。程序的运行截屏如下图:
发表评论
-
Android入门:ContentProvider
2012-07-02 00:06 1885一、ContentProvider介绍 Cont ... -
Android入门:监听ContentProvider数据改变
2012-07-02 00:06 1394一、监听ContentProvider主要步骤 1 ... -
android 使用广播接收者监听短信和拦截外拨电话
2012-06-27 23:31 2181如果你想监听自己或者别人接收到的短信,设置黑名单等功能, ... -
android 广播接收者--BroadcastReceiver
2012-06-27 23:30 3504BroadcastReceiver初识: ... -
一个项目只使用一个Activity初探
2012-06-27 23:29 937提供一个简单案例: 1,新建一个项目 修改和添加 ... -
android 之访问WebService显示手机号码归属地
2012-06-27 23:27 1428发送XML 通过URL封装路径打开一个HttpURLC ... -
Android开发从入门到精通(8) _9
2012-04-24 21:45 2423Spinner 第八章(9) 在本节中将为Spinne ... -
Android开发从入门到精通(8) _8
2012-04-24 21:44 933RadioGroup 第八章(8) 在本章中将为Rad ... -
Android开发从入门到精通(8) _7
2012-04-24 21:43 910EditText 第八章(7) 在本节中,和上一节很类 ... -
Android开发从入门到精通(8) _6
2012-04-24 21:43 837CheckBox 第八章(6) 在本节中,将为Chec ... -
Android开发从入门到精通(8) _5
2012-04-24 21:42 869按钮 第八章(5) 看看下面的代码。这段代码代表了四个 ... -
Android开发从入门到精通(8) _4
2012-04-23 22:18 1003为AutoComplete创建一个 ... -
Android开发从入门到精通(8) _3
2012-04-23 22:17 1124使用菜单 第八章(3) 在本节中,你将建造一个应用 ... -
Android开发从入门到精通(8) _2
2012-04-23 22:17 1006修改AndroidManifest.xml文件 第八章( ... -
Android开发从入门到精通(8) _1
2012-04-23 22:16 827列表,菜单和其它Views 第八章(1) 关键技能 & ... -
Android开发从入门到精通(7) _8
2012-04-23 22:16 1062试试这个:修改AndoridPhoneDialer项目 ... -
Android开发从入门到精通(7) _7
2012-04-22 15:14 931执行一个EditText View 第七章(7) ... -
Android开发从入门到精通(7) _6
2012-04-22 15:13 1118修改AndroidPhoneDialer 第七章(6) ... -
Android开发从入门到精通(7) _5
2012-04-22 15:13 896编辑活动许可 第七章(5) 大多数的Activit ... -
Android开发从入门到精通(7) _4
2012-04-22 15:12 974在本节中你将会 ...
相关推荐
本文实例讲述了Android实现开机自动启动Service或app的方法。分享给大家供大家参考,具体如下: 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动...
主要介绍了Android使用BroadcastReceiver实现手机开机之后显示画面的功能,结合实例形式分析了BroadcastReceiver的具体使用技巧及实现开机画面的相关功能代码,需要的朋友可以参考下
本示例实现通过继承接收系统广播BroadcastReceiver 实现一个开机启动的程序
实现Android 开机自启动程序,BroadCastReceiver
(也可以实现应用程序开机自动启动) public class OlympicsReceiver extends BroadcastReceiver { /*要接收的intent源*/ static final String ACTION = "android.intent.action.BOOT_COMPLETED"; public ...
android服务自启动Service以及BroadcastReceiver和Notification.zip
android service Notification ...安装的服务开机自启动,service定时的打印消息,消息同时显示在通知栏,窗体界面的跳转,自定义控件的开发。系统广播,定时广播,轮询广播等。BroadcastReceiver轮询广播
public class BootBroadcastReceiver extends BroadcastReceiver { static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) {...
BroadCastReceiver
Android APP:开机自动启动...Android启动完成会发出一个系统广播 ACTION_BOOT_COMPLETED,字符串常量表示为 “android.intent.action.BOOT_COMPLETED”,我们要做的是用BroadcastReceiver接收这个消息然后启动该程序。
代码如下:/*开机自动启动APP*/public class BootReceiver extends BroadcastReceiver { @Overridepublic void onReceive(Context context, Intent intent) {Log.d(“XRGPS”, “BootReceiver.onReceive: ” + intent...
android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...
android demo,BroadcastReceiver源代码的实现。
BroadcastReceiver,两种注册方式
android的broadcastReceiver的介绍。
实现手机短信监听的方式有两种:一是通过ContentObserver观察者实现监听,另一种就是通过广播即BroadcastReceiver实现短信监听,文章中通过使用BroadcastReceiver实现有新短信的及时监听及包含设定的关键字时自动...
介绍BroadcastReceiver使用的demo,具体的使用方法可以参看我的博客