首页 > 代码库 > Android:开机自启动并接收推送消息
Android:开机自启动并接收推送消息
接收推送消息部分我们通过ZeroMQ实现,可以参考http://www.cnblogs.com/ilovewindy/p/3984283.html。
首先是开机自启动的功能实现,代码如下:
1. AndroidManifest.xml中添加如下代码:
1 <!-- 抓取系统启动事件 --> 2 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 3 4 <application> 5 ….. 6 <service 7 android:name="com.demo.notification.NotificationService" 8 android:icon="@drawable/icon" 9 android:label="@string/app_name" >10 </service>11 12 <receiver android:name="com.demo.notification.MyScheduleReceiver" >13 <intent-filter>14 <action android:name="android.intent.action.BOOT_COMPLETED" />15 </intent-filter>16 </receiver>17 </application>
2. 接着是实现MyScheduleReceiver代码,这是当Android启动后会自动启动的程序。
1 public class MyScheduleReceiver extends BroadcastReceiver {2 3 @Override4 public void onReceive(Context context, Intent intent) {5 6 Intent service = new Intent(context, NotificationService.class);7 context.startService(service);8 }9 }
3. 实现NotificationService代码,用来接收推送消息
1 public class NotificationService extends Service { 2 private final IBinder mBinder = new MyBinder(); 3 4 @Override 5 public int onStartCommand(Intent intent, int flags, int startId) { 6 // 将接收推送消息任务放入后台执行 7 new ZeroMQMessageTask().execute(); 8 9 return Service.START_STICKY;10 }11 12 @Override13 public IBinder onBind(Intent arg0) {14 return mBinder;15 }16 17 public class MyBinder extends Binder {18 public NotificationService getService() {19 return NotificationService.this;20 }21 }22 23 private class ZeroMQMessageTask extends AsyncTask<String, Void, String> {24 25 public ZeroMQMessageTask() {26 }27 28 @Override29 protected String doInBackground(String... params) {30 31 ZMQ.Context context = ZMQ.context(1);32 ZMQ.Socket subscriber = context.socket(ZMQ.SUB);33 subscriber.subscribe(ZMQ.SUBSCRIPTION_ALL);34 subscriber.connect("tcp://x.x.x.x:xxxx");35 while (true) { // 通过不终止的循环来保证接收消息36 message = subscriber.recvStr();37 if (!message.equals("0")) { // 0是由我自己定义的空消息标识,可以替换成自定义的其它标识38 39 // 显示推送消息40 String ns = Context.NOTIFICATION_SERVICE;41 NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);42 43 int icon = R.drawable.icon;44 CharSequence tickerText = "Demo - " + message;45 long when = System.currentTimeMillis();46 47 Notification notification = new Notification(icon,48 tickerText, when);49 notification.flags |= Notification.FLAG_AUTO_CANCEL;50 Context uiContext = getApplicationContext();51 CharSequence contentTitle = "Demo";52 CharSequence contentText = message;53 Intent notificationIntent = new Intent(uiContext,54 NotificationService.class);55 PendingIntent contentIntent = PendingIntent56 .getActivity(uiContext, 0, notificationIntent, 0);57 58 notification.setLatestEventInfo(uiContext, contentTitle,59 contentText, contentIntent);60 61 mNotificationManager.notify(1, notification);62 }63 }64 }65 66 @Override67 protected void onPostExecute(String result) {68 }69 }70 }
好啦,重新启动手机尝试发条消息吧! :D
服务器端的代码可以参考此文:http://www.cnblogs.com/ilovewindy/p/3998862.html
Android:开机自启动并接收推送消息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。