首先,让我向您介绍整个过程。首先,我实现了一个成功的FCM。我已经收到了我想要的所有类型的通知。
问题是,只有一个通知可用时,通知清除(取消)。但当时有多个相同的通知可用,最后只有一个通知将被取消。
我想在接受和拒绝时在浏览器上打开url
我在下面附上了我的代码。
private void sendNotification1(String title, String body, String data) {
int when = new Random().nextInt();
String url = "http://google.com";
String url1 = "http://google.com";
try {
JSONObject dataObject = new JSONObject(data);
url = dataObject.getString("acceptUrl");
url1 = dataObject.getString("declineUrl");
} catch (Exception e) {
e.printStackTrace();
}
PendingIntent accceptIntent = NotificationAcceptActivity.getAcceptDismissIntent(this, when, url);
PendingIntent dismissIntent = NotificationRejectActivity.getAcceptDismissIntent(this, when, url1);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setContentTitle(title)
.setContentText(body)
.setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher))
.setSmallIcon(R.mipmap.ic_notication)
.setAutoCancel(true)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setSound(defaultSoundUri)
.setPriority(Notification.PRIORITY_HIGH)
.addAction(R.drawable.ic_close_black_24dp, "Reject", dismissIntent)
.addAction(R.drawable.ic_check_black_24dp, "Accept", accceptIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(when, notificationBuilder.build());
}
公共类通知可接受性扩展活动{
public static final String NOTIFICATION_ID = "NOTIFICATION_ID";
public static final String URL = "ACCEPT_URL";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = getIntent().getStringExtra(URL);
Intent dismissIntent = new Intent(Intent.ACTION_VIEW);
dismissIntent.setData(Uri.parse(url));
Log.e("NotificationAccept ", "url:- " + url);
startActivity(dismissIntent);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(getIntent().getIntExtra(NOTIFICATION_ID, -1));
finish();
}
public static PendingIntent getAcceptDismissIntent(Context context, int notificationId, String url) {
Intent intent = new Intent(context, NotificationAcceptActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.putExtra(URL, url);
intent.putExtra(NOTIFICATION_ID, notificationId);
PendingIntent dismissAcceptIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return dismissAcceptIntent;
}
}
公共类NotificationRejectActivity扩展活动{
public static final String NOTIFICATION_ID = "NOTIFICATION_ID";
public static final String URL = "ACCEPT_URL";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = getIntent().getStringExtra(URL);
Intent dismissIntent = new Intent(Intent.ACTION_VIEW);
dismissIntent.setData(Uri.parse(url));
Log.e("NotificationReject ", "url:- " + url);
startActivity(dismissIntent);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(getIntent().getIntExtra(NOTIFICATION_ID, -1));
finish();
}
public static PendingIntent getAcceptDismissIntent(Context context, int notificationId, String url) {
Intent intent = new Intent(context, NotificationRejectActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.putExtra(URL, url);
intent.putExtra(NOTIFICATION_ID, notificationId);
PendingIntent dismissAcceptIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return dismissAcceptIntent;
}
}