android中发送消息notification点击跳转到指定的界面
发送消息功能
背景:android是用来给原来的web程序打包用的,就是原来的网页程序使用webview打包成一个移动端app。
主要的功能函数:
这个notice()方法是用来给网页的前端调用的,主要是使用注解@JavascriptInterface实现的。
/**
* 调用消息提示的功能(供页面前端js调用)
* @param message 服务器发送过来的消息(消息内容+taskId)
*/
@JavascriptInterface
public void notice(String message) {
String me=message.substring(0,message.indexOf("|"));
String path=message.substring(message.indexOf("|")+1,message.length());
handleNotification(me,path);
}
消息提示的功能:
实现结果:发送消息后在消息栏显示消息信息,多条消息不合并显示,点击不同的消息跳转到不同的页面。
getActivity不会打开新的activity:设置activity只能存在一个
android:launchMode="singleTop"
/**
* 消息提示功能
* @param message 传递的消息的具体内容
* @param path 传递的任务的id
*/
private void handleNotification(String message,String path) {
Intent intent = new Intent();
intent.setClass(this, MainActivity.class);
intent.putExtra("pushMsg",path);
PendingIntent pendingIntent = PendingIntent.getActivity(this, getAnId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationChannel notificationChannel = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
notificationChannel = new NotificationChannel("notification", "测试通知", NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(notificationChannel);
}
// 创建通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "notification")
.setSmallIcon(R.drawable.notification)
.setWhen(System.currentTimeMillis())
.setContentIntent(pendingIntent)
.setContentTitle("消息提示")
.setGroupSummary(false)//避免消息合并的
.setGroup("group")//避免消息合并的
.setContentText("你有一个新的任务:" + message + ",请及时处理!")
.setPriority(NotificationCompat.PRIORITY_MAX);
// 发送通知
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
//获取权限,如果已经在xml中给定了权限可以不用写这一部分
return;
}
notificationManager.notify(getAnId(), builder.build());
}