基本使用
createNotificationChannel("@AA","@我的消息",NotificationManager.IMPORTANCE_HIGH);
ButtonHandeler bh = new ButtonHandeler();
setOnClickListerner(this);
private String createNotificationChannel(String channelId,String channelName,int level){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
NotificationManager manager = (NotificationManager)getSystemService(NOTIFCATION_SERVICE);
NotificationChannel channel = new NotificationChannel(channelId,channelName,level);
channel.setDescription("通知级别"+level);
channel.setSound(Uri.parse("播放音乐地址"),Notification.AUDIO_ATTRIBUTES_DEFAULT);
manager.createNotificationChannel(channel);
}
}
private class ButtonHandeler implements View.OnClickListener{
@Override
public void onClick(View view) {
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent intent = new Intent(MainActivity.this, PayActivity.class):
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this,
0,
intent,
PendingIntent.FLAG_MUTABLE);
Notification notification = new NotificationCompat.Builder(MainActivity.this, channelId)
.setContentInfo("你有新消息")
.setContentText("你的花费已用完,请及时充值")
.setContentIntent(pendingIntent)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.bb_small_3)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bb))
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL).build();
manager.notify(1, notification):
}
}
完整的广播发送接受示例
//定义广播
public class MessageBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null) return;
if (! TextUtils.equals(intent.getAction(), ACTION_TEST)) {
return;
}
final String param = intent.getStringExtra("param");
Log.i("TAG", " 广播里面收到参数:" + param);//接受广播
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
}
//注册广播
private void registerBroadCast() {
try {
//注册点击事件广播
IntentFilter filter = new IntentFilter(ACTION_TEST);
filter.setPriority(Integer.MAX_VALUE); //设置级别
MessageBroadcastReceiver broadcastReceiver = new MessageBroadcastReceiver();
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, filter);
} catch (Exception e) {
e.printStackTrace();
}
}
//发送广播
try {
Intent intent = new Intent();
intent.putExtra("param", param);
intent.setAction(ACTION_TEST);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);//发送标准广播
} catch (Exception e) {
e.printStackTrace();
}
动态广播基本使用
private TimeChangeReceiver timeChangeReceiver;
public void show() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.TIME_TICK");
registerReceiver(timeChangeReceiver,intentFilter);
}
private class TimeChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Date date = new Date();
//这里设置通知显示的内容
}
}
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(timeChangeReceiver);
}
静态广播基本使用
//创建广播文件
//清单文件中注册
<receiver>
android:name="MyReceiver
android:enabled="true'
android:exported="true"
<intent-filter>
<action android:name="com.example.noticicationtest.CLOSE_NOTIFICATION"/></intent-filter>
</receiver>
//
private class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager manager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(intent.getIntExtra("nid",888));
}
}
//
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent intent = new Intent(MainActivity.this, PayActivity.class):
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this,
0,
intent,
PendingIntent.FLAG_MUTABLE);
Intent intent2 = new Intent("com.example.noticicationtest.CLOSE_NOTIFICATION");
intent2.setPackage(getPackageName);//
intent2.putExtra("nid",id);
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this,
id,
intent,
PendingIntent.FLAG_MUTABLE|PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(MainActivity.this, channelId)
.setContentInfo("你有新消息")
.setContentText("你的花费已用完,请及时充值")
.setContentIntent(pendingIntent)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.bb_small_3)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bb))
.setAutoCancel(true)
.addAction(0,"关闭通知",intent2);
.setDefaults(Notification.DEFAULT_ALL).build();
manager.notify(id++, notification):