Android系统消息推送

时间: 2023-07-11 admin 互联网

Android系统消息推送

Android系统消息推送

现在好多应用都接入了推送功能,市面上也有很多关于推送的第三方,例如极光等等,那么我们需求不大,接入极光会造成很大的资源浪费,下面我们来看下利用android服务进行本地推送消息,

1.注册一个Service

import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import java.util.Calendar;/*** Created by 70883 on 2017/8/10.*/
public class PushSmsService extends Service {private NotificationManager manager;private PendingIntent pi;private MyThread myThread;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {myThread = new MyThread();myThread.start();super.onCreate();}@Overridepublic void onDestroy() {super.onDestroy();}@TargetApi(Build.VERSION_CODES.JELLY_BEAN)private void notification() {// 获取系统的通知管理器  manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);Intent intent = new Intent(getApplicationContext(),MainActivity.class);pi = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);Notification notification = new Notification.Builder(getApplicationContext()).setAutoCancel(true).setContentText("工作在忙,也要吃饭哦").setContentIntent(pi).setSmallIcon(R.mipmap.ic_icon).setWhen(System.currentTimeMillis()).build();notification.defaults = Notification.DEFAULT_ALL; // 使用默认设置,比如铃声、震动、闪灯  notification.flags = Notification.FLAG_AUTO_CANCEL; // 但用户点击消息后,消息自动在通知栏自动消失  notification.flags |= Notification.FLAG_NO_CLEAR;// 点击通知栏的删除,消息不会依然不会被删除  manager.notify(0, notification);}private class  MyThread  extends Thread{private Calendar  c ;@Overridepublic void run() {while (true){c = Calendar.getInstance();if(c.get(Calendar.HOUR_OF_DAY) == 15){try {notification();sleep(1000*60*60);} catch (InterruptedException e) {e.printStackTrace();}}}}}
}

2.在AndroidMan中注册

<service android:name=".ui.Service.PushSmsService"></service>  


3.由于我是需要全局应用就在Application中进行启动了

 

 public void startService() {Intent intent = new Intent(this, PushSmsService.class);// 启动服务startService(intent);}


4.也可以配合服务端使用,定时推送消息