自定义通知栏
先自定义Receiver
1
2
3
4
5
6
7
8
9
|
<receiver android:enabled=
"true"
android:name=
"Your Receiver"
>
<intent-filter>
<category android:name=
"You package Name"
>
</category></action></action></action></action></intent-filter>
</receiver>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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
1
2
3
4
5
6
7
8
9
10
|
<!--?xml version=
"1.0"
encoding=
"utf-8"
?-->
<linearlayout android:layout_height=
"fill_parent"
android:layout_width=
"fill_parent"
android:orientation=
"horizontal"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<imageview android:id=
"@+id/icon"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
>
<linearlayout android:layout_height=
"wrap_content"
android:layout_marginleft=
"10dip"
android:layout_width=
"wrap_content"
android:orientation=
"vertical"
>
<textview android:id=
"@+id/title"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
android:textcolor=
"#286CA6"
android:textsize=
"20sp"
>
<textview android:id=
"@+id/text"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
android:textcolor=
"#6FA45E"
android:textsize=
"16sp"
>
</textview></textview></linearlayout>
</imageview></linearlayout>
|
初始化通知效果
1
2
3
4
5
6
7
8
9
|
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一下。设置成默认,发送通知
1
2
3
4
5
6
7
8
|
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,发送时指定编号发送。