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.也可以配合服务端使用,定时推送消息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。