Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android:開機自啟動並接收推送消息

Android:開機自啟動並接收推送消息

編輯:關於Android編程

首先是開機自啟動的功能實現,代碼如下: 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     @Override 4     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     @Override 13     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         @Override 29         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 = PendingIntent 56                             .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         @Override 67         protected void onPostExecute(String result) { 68         } 69     } 70 }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved