[android]JPush自定义通知栏

JPush嵌入工程

官网详解

自定义通知栏

先自定义Receiver

<receiver
    android:name="Your Receiver"
    android:enabled="true">
    <intent-filter>
        <action android:name="cn.jpush.android.intent.REGISTRATION" />
        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
        <category android:name="You package Name" />
    </intent-filter>
</receiver>
private static final String TAG = "MyReceiver";

	@Override
	public void onReceive(Context context, Intent intent) {
		Bundle bundle = intent.getExtras();
		if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
			Log.i(TAG, "JPush用户注册成功");
		} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent
				.getAction())) {
			Log.i(TAG, "接受到推送下来的自定义消息");
			receivingNotification(context, bundle);
		} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent
				.getAction())) {
			Log.i(TAG, "接受到推送下来的通知");

		} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent
				.getAction())) {
			Log.i(TAG, "用户点击打开了通知");
			openNotification(context, bundle);
		}
	}

在receivingNotification()中自定义notification通知栏

	private void receivingNotification(Context context, Bundle bundle) {
		NotificationManager manager = (NotificationManager) context
				.getSystemService(Context.NOTIFICATION_SERVICE);
		String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
		String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
		// 使用notification
		// 使用广播或者通知进行内容的显示
		NotificationCompat.Builder builder = new NotificationCompat.Builder(
				context);
		builder.setContentText(message).setSmallIcon(R.drawable.notification_icon_2).setContentTitle(JPushInterface.EXTRA_TITLE);
		builder.setDefaults(Notification.DEFAULT_SOUND);
		manager.notify(1,builder.build());
	}

我试图更改下来通知栏里的icon,各种方法都试过,文档看了无数遍,发现这个图标是不可更改的,永远和APP程序图标一样的。。

带有下拉效果

还有一种自定义通知栏,带有下拉效果。是官网介绍的。

布局文件customer_notitfication_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >
     <ImageView android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
     <LinearLayout android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:orientation="vertical"
         android:layout_marginLeft="10dip"
         >
    <TextView android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#286CA6"
        android:textSize="20sp"
        />

    <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:textColor="#6FA45E"
         android:textSize="16sp"
        />
   </LinearLayout>

</LinearLayout>

初始化通知效果

		CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(
				MainActivity.this, R.layout.customer_notitfication_layout,
				R.id.icon, R.id.title, R.id.text);
		// 指定定制的 Notification Layout
		builder.statusBarDrawable = R.drawable.notification_icon;
		// 指定最顶层状态栏小图标
		builder2.layoutIconDrawable = R.drawable.notification_icon;
		// 指定下拉状态栏时显示的通知图标
		JPushInterface.setPushNotificationBuilder(1, builder1);

这里面有一个方法builder.statusBarDrawable,这个设置的是一个状态栏图标,不是下拉界面里那个。当来通知时,手机顶部会滚动提示一下来消息了。这里设置的图标就是刚来通知在顶部提示的,而不是上图里红框里那个。

这种带下来效果

官网提供的一种简版

还有一种简版的,也是官网demo,mark一下。设置成默认,发送通知

	BasicPushNotificationBuilder builder2 = new BasicPushNotificationBuilder(
				MainActivity.this);
		builder2.statusBarDrawable = R.drawable.logo;
		builder2.notificationFlags = Notification.FLAG_AUTO_CANCEL; // 设置为自动消失
		builder2.notificationDefaults = Notification.DEFAULT_SOUND
				| Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS; // 设置为铃声与震动都要
		JPushInterface.setDefaultPushNotificationBuilder(builder2);
		JPushInterface.setPushNotificationBuilder(2, builder2);

setPushNotificationBuilder(2, builder2);设置builder2的样式编号为2,发送时指定编号发送。

JPush官网android API

时间: 2024-11-08 22:19:23

[android]JPush自定义通知栏的相关文章

Android种使用Notification实现通知管理以及自定义通知栏(示例四)

示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我们的通知栏仅仅是更改传来短信的数目,而不是对每条短信单独做一个通知栏用于提示. 修改通知 可以设置一条通知,当然可以更新一条通知,我们通过在调用NotificationManager.notify(ID, notification)时所使用的ID来更新它.为了更新你之前发布的通知,你需要更新或者创建

android自定义通知栏遇到的问题

自定义通知栏的布局时,为了复制了一个layout.xml文件,引用,但一直报错 android.app.RemoteServiceException: Bad notification posted from package com.example.notification: Couldn't expand RemoteViews for: StatusBarNotification(pkg=com.example.notification id=2 tag=null score=0 notn=

Android无布局文件下自定义通知栏notification的 icon

在开发项目一个与通知栏有关的功能时,由于自己的项目是基于插件形式的所以无法引入系统可用的布局文件,这样无法自定义布局,造成无法自定义通知栏的icon. 在网上也有一种不用布局文件更换icon的方法,但是由于Android的开放性,某些手机厂商会修改通知的源码,不是使用系统原有的布局文件方法有一定的局限性.文章如下http://blog.csdn.net/z1074971432/article/details/10446715有兴趣的朋友可以看下. 为了适配大多数的机型这里衍生出一种比较曲线救国的

Android JPush(极光推送)的使用教程

首先进入官网https://www.jpush.cn/,先注册一个账号. 注册号以后,创建应用 1.点击右上角进入个人中心 2.点击创建应用 3.在创建应用界面输入自己项目的应用名和应用的包名,输入后点击创建我的应用按钮就可以完成创建. 4.创建完成后就能看到以下界面,这个界面中的AppKey就是我们等下要用的Key.该系统还帮你自动完成可一个属于你的Demo,供你参考,可以点击下载Android Example 下载. 这样就完成了应用的创建,接下来就是下载SDK以便后面集成是使用. 下载SD

Android开发之通知栏Notification详解

Notification的用法  --- 状态栏通知 发送一个状态栏通知必须的两个类: 1. NotificationManager   --- 状态栏通知的管理类,负责发通知,清除通知等 NotificationManager : 是一个系统Service,必须通过 context.getSystemService(NOTIFICATION_SERVICE)方法获取 NotificationManager notificationManager = (NotificationManager)

android 实现自定义状态栏通知(Status Notification)

在android项目的开发中,有时为了实现和用户更好的交互,在通知栏这一小小的旮旯里,我们通常需要将内容丰富起来,这个时候我们就需要去实现自定义的通知栏,例如下面360或者网易的样式: 首先我们要了解的是 自定义布局文件支持的控件类型:Notification的自定义布局是RemoteViews,因此,它仅支持FrameLayout.LinearLayout.RelativeLayout三种布局控件,同时支持AnalogClock.Chronometer.Button.ImageButton.I

android怎么得到通知栏的消息内容,然后保存消息

============问题描述============ android怎么得到通知栏的消息内容,然后保存消息,也就是来了一条消息,点击进去之后显示的界面怎么知道点击的通知的ID和内容还有时间信息. ============解决方案1============ 这个,真做不了. 通知管理器只能发送通知.不能取得通知. android系统也是为了安全性考虑 要是你可以取得别的程序的通知和通知里面的东西. 那岂不是就可以更改里面的内容,并且可以修改将要跳转的地方. 那样我就可以点击qq动听的通知,跳到

【原创】android——Tabhost 自定义tab+底部实现+intent切换内容

1,实现tabhost自定义格式,再此仅仅显示背景和文字,效果图预览:(底边栏所示) (图片变形) 2,xml配置 activity_user的XML配置  1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/tabhost&qu

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/