欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android实现系统消息推送

程序员文章站 2022-04-06 13:26:41
现在好多应用都接入了推送功能,市面上也有很多关于推送的第三方,例如极光等等,那么我们需求不大,接入极光会造成很大的资源浪费,下面我们来看下利用android服务进行本地推送消息。1.注册一个servi...

现在好多应用都接入了推送功能,市面上也有很多关于推送的第三方,例如极光等等,那么我们需求不大,接入极光会造成很大的资源浪费,下面我们来看下利用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;
 @override
 public ibinder onbind(intent intent) {
  // todo auto-generated method stub
   return null;
   }
 
 @override
 public void oncreate() {
  mythread = new mythread();
  mythread.start();
  super.oncreate();
 }
 
 @override
 public 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 ;
  @override
  public 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.也可以配合服务端使用,定时推送消息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。