通知栏Notification在不同手机上显示的问题总结

可以参照http://blog.csdn.net/vipzjyno1/article/details/25248021,这里面关于通知的写的不错,也很全面,我的这篇主要是记录自己在适配上遇到的问题。

通知的统一的创建方式:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext);

而通知的管理则是使用NotificationManager是用来管理通知的,使用如下:先初始化用到的系统服务,然后调用notify(int notifyId,Notification notification)使用

NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService(mContext.NOTIFICATION_SERVICE);

mNotificationManager.notify(105, mBuilder.build());

接下来描述一下builder中的使用问题:(以下使用机型ZTE-U807(刷机DUI桌面),三星A5,坚果手机进行测试)

1、手机上不设置setSmallIcon就不会显示通知但是三星和中兴手机会有通知振动的提示

mBuilder.setSmallIcon(R.drawable.notify_icon).setLargeIcon(bigIcon);

2、不同手机上设置setSmallIcon位置显示不一致

(1)两者都设置mBuilder.setSmallIcon(R.drawable.notify_icon).setLargeIcon(bigIcon);

坚果手机显示:ticker通知显示的是小图标SmallIcon ,A区域显示应用图标,E区域显示的是小图标SmallIcon

三星手机显示:ticker通知显示的是小图标,A区域显示的是大图标,E区域显示的是小图标。

中兴手机显示:ticker通知显示的是小图标(centerCrop),A区域显示的是大图标,E区域显示的是小图标(但是很大,图标占的区域过大,适配不行)

(2)只设置mBuilder.setSmallIcon(R.drawable.notify_icon)

坚果手机显示:ticker通知显示的是小图标SmallIcon ,A区域显示应用图标,E区域不显示。

三星手机显示:ticker通知显示的是小图标,A区域显示的是小图标,E区域不显示。

中兴手机显示:ticker通知显示的是小图标(centerCrop),A区域显示的是小图标,E区域不显示。

3、自定义通知(注意里面的内容最好不要超过两行,记得省略

/**
 * 自定义视图通知
 */
public void showNotifyConfirm(String title,String content,String ticker) {
    // 先设定RemoteViews
  RemoteViews viewCustom = new RemoteViews(mContext.getPackageName(),R.layout.view_custom);
  // 设置对应IMAGEVIEW的ID的资源图片
  viewCustom.setImageViewResource(R.id.custom_icon, R.drawable.icon);
  // view_custom.setInt(R.id.custom_icon,"setBackgroundResource",R.drawable.icon);
  viewCustom.setTextViewText(R.id.tv_custom_title, title);
  viewCustom.setTextViewText(R.id.tv_custom_content,content);
  viewCustom.setTextViewText(R.id.tv_custom_time,refFormatNowDate());
  // 设置时间显示
  viewCustom.setViewVisibility(R.id.tv_custom_time, View.GONE);
  NotificationCompat.Builder mBuilder = new Builder(mContext);
  mBuilder.setAutoCancel(true)
      .setTicker(ticker)
    .setSmallIcon(R.drawable.btn_prev)//小图标
    .setContent(viewCustom)
    //.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL))
    .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示
    .setPriority(Notification.PRIORITY_DEFAULT)//设置该通知优先级
    .setOngoing(false);//不是正在进行的 ,true为正在进行 效果和.flag一样;
  mNotificationManager.notify(105, mBuilder.build());
}

显示结果分析如下:

坚果手机显示:ticker通知显示的是小图标SmallIcon ,D区域显示的是应用图标,紫色区域是应用名称,点击下拉箭头收起或展开新通知。下面区域是自定义布局区域。

三星手机显示:ticker通知显示的是小图标,A区域显示的是自定义图标,不管设置不设置大图标都不显示大图标

中兴手机显示:ticker通知显示的是小图标(centerCrop),A区域显示的是大图标,B区域显示的是自定义图标。(如果不设置大图标,则没有A区域的显示,只有自定义布局的显示,C区域一般两行就可以了,涉及到适配问题)

4、点击通知栏,通过receiver处理跳转后的事情(在manifest文件中注册时一定要加上export=true的属性,不然大部分手机都无法收到onreceive

/**
 * 显示通知栏点击跳转在receiver中处理
 **/
public void showIntentReceiverNotify(String title,String content,String ticker,String pid) {
    NotificationCompat.Builder mBuilder = initNotify();
  mBuilder.setAutoCancel(true)
      .setContentTitle(title)
    .setContentText(content)
    .setTicker(ticker);
  Intent clickIntent = new Intent(mContext, ClickNotifyReceiver.class);
  clickIntent.setAction("com.qihoo.gamecenter.pluginapk.ClickNotifyReceiver.click");
  clickIntent.putExtra("pushId", pid);
  PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
  mBuilder.setContentIntent(pendingIntent);
            
  mNotificationManager.cancel(110);
  mNotificationManager.notify(110, mBuilder.build());
}

在传值的时候,setContentIntent(PendingIntent intent)这个方法,PendingIntent可以设置执行次数,主要用于远程服务通信、闹铃、通知、启动器、短信中。

Notification支持多种Intent来响应单击事件、消除事件、处理紧急状态的全屏事件等,setContentIntent(PendingIntent intent)来处理以上这么多的事件。

PendingIntent的位标识符:

FLAG_ONE_SHOT表示返回的PendingIntent仅能执行一次,执行完后自动取消

FLAG_NO_CREATE表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL

FLAG_CANCEL_CURRENT表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent,这个有利于数据保持为最新的,可以用于即时通信的通信场景

FLAG_UPDATE_CURRENT表示更新的PendingIntent

具体的PendingIntent的使用,可以参照 http://blog.csdn.net/vipzjyno1/article/details/25248021,这里面关于通知的写的不错,也很全面,我的这篇主要是记录自己在适配上遇到的问题。

备注:点击通知栏,通过receiver处理跳转后的事情,发广播和接收广播这里我们就不做详细描述了

时间: 2024-12-20 22:05:13

通知栏Notification在不同手机上显示的问题总结的相关文章

destoon会员公司主页扫描二维码手机上显示空白

会员公司主页扫描二维码手机上显示空白,查看源码扫描的二维码后面多了:88端口号,可以修改page.js中function Dqrcode()的 DTPath+'api/qrcode.png.php?auth='+encodeURIComponent(url) 为 DTPath+'api/qrcode.png.php?auth='+encodeURIComponent(window.location.href) 原文地址:https://www.cnblogs.com/lx0715/p/99467

自定义cell时,在宽的手机上显示太窄解决办法

1.工程设置要如下:见第二个红框,清除launch screan file 后面的内容 2.自定义的cell要设置auto layout 和size clases

关于Unity程序在IOS和Android上显示内嵌网页的方式

近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的原理好像是通过调用浏览器内核.然后将网页渲染到mesh的方式完毕的. 但遗憾的是仅仅支持windows桌面版本号.但还是发出来大家假设有须要能够下载  下载地址: http://pan.baidu.com/s/1nt3FVkd unity-webview 这个是在github上找到的. 是一个kei

移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo

移动端之在不同尺寸大小的手机上展示同一效果解决方案 by FungLeo 前言,反思 在之前的项目当中,我在CSS中设置html{font-size: 62.5%;},也就是设置为10px,然后全站根据这个根植,来设置rem单位的样式.这样虽然解决了很多的问题.但是在面对不同宽度的手机的时候,还是需要去自适应设置很多的内容.当然,因为手机分辨率的不同,我们可以自由的将页面设置在320(iphone5s)-414(iphone6plus)这样的范围内还是很合适的.但是,奇葩手机年年有,华为meta

Android中使用Notification在状态栏上显示通知

场景 状态栏上显示通知效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建NotificationActivity,通过getSystemService方法获取通知管理器. 然后创建通知并设置通知的一些属性,再使用通知管理器发送通知. package com.badao.relativelayouttest; import androidx.annotation.Req

在iPhone手机上写了input type="date" 显示不出来的原因

在iPhone手机上写了input type="date" 显示不出来的原因 今天在手机页面上使用新的input类型,这样子写,在chrome浏览器上浏览,很好,显示出来.然后用iOS测试就无法显示. <input type="date"> 遇到这个问题,我的解决思路是:既然在chrome浏览器可以显示,在iOS系统上有问题,那应该是不同设备对这个属性的支持度的问题吧.我就把这个input框的value值也填上,果然,在iOS就能显示调用出日期选择了.

discuz 手机上看帖子图片显示“[viewimg]”如何修改?

手机bbs上看帖子,如果帖子中有外网图片显示的是"[viewimg]",而不是图片pre_forum_thread 主题表pre_forum_post 帖子表 库表pre_forum_post中字段message显示如下:[align=left][img=500,341]http://y2.ifengimg.com/a/2014_21/f0d13f0ed691a35.jpg[/img][/align][attach]14[/attach] 程序代码:source/function/fu

极客编程小挑战#29:实现手机上常见的某一功能的效果显示

本期挑战: 实现手机上常见的某一功能的效果显示.可以是某个按钮的显示效果,页面跳转的显示效果,二级菜单的出现方式等.可以做已有的效果,也可以发挥你的想象,做出你期待的手机功能效果. 提交方式: 录制代码编写过程或最终代码:点击开始 跟帖发布代码预览地址(使用GB按钮可以直接嵌入发帖回复中):演示地址 [强烈提醒]尽量通过添加课程,在本文评论中附上链接的方式提交答案,有特别奖励- [强烈提醒]提交了答案的人,请扫描下图中的二维码,加入微信群,方便工作人员进行信息统计 本期礼品: 感谢美团云提供10

android的开发 华为手机上不显示menu键

android的开发,华为手机上不显示menu键解决办法: 在AndroidManifest.xml中讲targetSdkVersion改为9. <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="9" /> 原因: (2)高版本默认OptionsMenu在ActionBar里,不会有虚拟menu键: (1)华为没有菜单键的硬按钮.