android nofication简单实现
2016-12-02 10:14
162 查看
nofication 的简单实现和封装
对于现在的应用基本上都会使用到nofication(通知),通知的样式也是越来越多在这里呢,我只是简单的实现一个聊天消息的通知,给与初学者提供帮助
废话不多说
封装类:
package com.zy.fire.ui; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.NotificationCompat; import java.util.ArrayList; @SuppressLint("NewApi") public class NotifyUtil { private int NOTIFICATION_ID; private NotificationManager nm; private Notification notification; private NotificationCompat.Builder cBuilder; private Context mContext; public NotifyUtil(Context context, int ID) { this.NOTIFICATION_ID = ID; mContext = context; nm = (NotificationManager) mContext .getSystemService(Activity.NOTIFICATION_SERVICE); cBuilder = new NotificationCompat.Builder(mContext); } private void setCompatBuilder(PendingIntent pendingIntent, int smallIcon, String ticker, String title, String content, boolean sound, boolean vibrate, boolean lights) { cBuilder.setContentIntent(pendingIntent); cBuilder.setSmallIcon(smallIcon); cBuilder.setTicker(ticker); cBuilder.setContentTitle(title); cBuilder.setContentText(content); cBuilder.setWhen(System.currentTimeMillis()); //设置滑动小时 cBuilder.setAutoCancel(true); cBuilder.setPriority(NotificationCompat.PRIORITY_MAX); int defaults = 0; //在此处判断声音 if (sound) { defaults |= Notification.DEFAULT_SOUND; } if (vibrate) { defaults |= Notification.DEFAULT_VIBRATE; } if (lights) { defaults |= Notification.DEFAULT_LIGHTS; } if (sound || vibrate || lights) { System.out.println("=====深渊"); cBuilder.setDefaults(defaults); }else{ System.out.println("=====无声"); } } /** * 显示消息通知 * * @param pendingIntent * @param smallIcon * @param ticker * @param title * @param content */ public void notify_mailbox(PendingIntent pendingIntent, int smallIcon, int largeIcon, ArrayList<String> messageList, String ticker, String title, String content, boolean sound, boolean vibrate, boolean lights) { setCompatBuilder(pendingIntent, smallIcon, ticker, title, content, sound, vibrate, lights); Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), largeIcon); //卧槽,设置大图标居然不管用,经过查询,发现是部分锤子手机不行,I fu le you; cBuilder.setLargeIcon(bitmap); cBuilder.setSmallIcon(smallIcon); //只能用小图了 //cBuilder.setDefaults(Notification.DEFAULT_ALL); cBuilder.setAutoCancel(true); NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); for (String msg : messageList) { inboxStyle.addLine(msg); } inboxStyle.setSummaryText("[" + messageList.size() + "条]" + title); cBuilder.setStyle(inboxStyle); sent(); } private void sent() { notification = cBuilder.build(); nm.notify(NOTIFICATION_ID, notification); } public void clear() { nm.cancelAll(); } }
在Activity中的简单调用这里我写的只是一个测试 大家可以按照需要自己修改和添加
package com.zy.fire.ui; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import java.util.ArrayList; /***************************************************** * author: wz * email: wangzhong0116@foxmail.com * version: 1.0 * date: 2016/12/1 12:28 * description: 简单通知测试 *****************************************************/ public class NoficationTestActivity extends AppCompatActivity implements View.OnClickListener { private Button nofication1; private Button button; private int requestCode = (int) SystemClock.uptimeMillis(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_nofication); initView(); } private void initView() { nofication1 = (Button) findViewById(R.id.nofication1); button=(Button)findViewById(R.id.button); nofication1.setOnClickListener(this); button.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.nofication1: showN(1); break; case R.id.button: showN(2); break; } } private void showN(int flag){ String content = "[" + 5 + "条]高圆圆: 万一啊是否"; int smallIcon = R.mipmap.ic_launcher; int largeIcon = R.mipmap.ic_launcher; NotifyUtil notify3 = new NotifyUtil(this, ++flag); String ticker = "您有一条新通知"; String title = "消息提醒"; ArrayList<String> messageList = new ArrayList<String>(); messageList.add("asdfadsf"); messageList.add("asdfadsf"); messageList.add("asdfadsf"); notify3.notify_mailbox(getDefalutIntent(), smallIcon, largeIcon, messageList, ticker, title, content, true, true, true); } /** * @获取默认的pendingIntent,为了防止2.3及以下版本报错 * @flags属性: * 在顶部常驻:Notification.FLAG_ONGOING_EVENT * 点击去除: Notification.FLAG_AUTO_CANCEL */ public PendingIntent getDefalutIntent(){ Intent intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); < ad3d span style="color:#cc7832;"> Bundle bundle = new Bundle(); intent.putExtras(bundle); intent.setClass(this, MessageActivity.class); PendingIntent pIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); return pIntent; } }
简单就说道这里,如果大家有什么不懂的可以给我留言
相关文章推荐
- android实现简单的路线导航功能
- Android HAL实现的三种方式- 基于JNI的简单HAL设计
- android 3D 游戏实现之简单碰撞检测
- 简单实现Android顶部工具栏和底部工具栏
- android 之手机拨号器,以及短信发送器的简单实现
- android简单demo学习系例之菜单实现
- Android:一个简单查询界面的实现
- 【android】sqlite+content provider+cursor adapter的最简单实现示例
- Android中用AsyncTask简单实现多线程
- Android 手机重力感应实现简单介绍
- 简单实现Android顶部工具栏和底部工具栏
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- android listview 的弹性滑动 简单demo 实现
- 实现简单的Android的播放视频功能
- [Android][UI]模拟器启动界面动画效果的简单实现
- Android Tab 选项卡的简单实现
- android listview 的弹性滑动 简单demo 实现
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- android实验三 简单聊天记录的设计与实现
- 一个Android登陆的简单实现