Как открыть URL-адрес, нажав уведомление в Android

#android #firebase #firebase-realtime-database #notifications #openurl

# #Android #firebase #firebase-база данных в реальном времени #уведомления #openurl

Вопрос:

##### когда я нажимаю на уведомление, приложение снова открывается, я хочу открыть определенный URL-адрес после нажатия на уведомление. #####

! [https://drive.google.com/open?id=1YIoLK3039IbtswnSdc5k7TKbp6UPhWKf ] [смотрите изображение здесь] 1

 public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Intent iA = new Intent(this, MainActivity.class);
        iA.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,iA,PendingIntent.FLAG_ONE_SHOT);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
        notificationBuilder.setContentTitle("FCM NOTIFICATION");
        notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
        notificationBuilder.setAutoCancel(true);
        notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
        notificationBuilder.setContentIntent(pendingIntent);
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0,notificationBuilder.build());

    }
}
 

Комментарии:

1. сделайте ожидающую трансляцию намерения, а затем на этой трансляции в приемнике откройте URL

2. возможно, это отредактированное сообщение поможет вам понять мой вопрос.

3. вместо .getActivity этого вы можете создать широковещательную рассылку, затем получить ее с помощью какого-либо широковещательного приемника и открыть в нем URL. Так что в основном ничего нового в моем комментарии. В чем проблема? Вы не знаете, как сделать трансляцию?

4. да, я не знаю, как транслировать.

5. Асиф Рахман поделился еще лучшим способом, проверьте его ответ

Ответ №1:

Вы можете использовать ожидающее намерение, подобное этому, в своем уведомлении:

 Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT);
 

Комментарии:

1. Это должно сработать, возможно, вы делаете это неправильно. Кстати, ваше уведомление не будет работать на устройствах Oreo и выше, поскольку вы не использовали канал уведомлений.

Ответ №2:

Вы можете использовать метод, подобный этому, и просто передавать аргументы

     void openUrl(@NonNull RemoteMessage remoteMessage, Context context, String title, String body, String commingUrl){
    Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(commingUrl));
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context,CHANNEL_ID)
            .setSmallIcon(R.drawable.notification)
            .setContentTitle(title)
            .setContentText(body)
            .setAutoCancel(true)
            .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    notificationBuilder.setContentIntent(pendingIntent);
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0,notificationBuilder.build());
}
 

и вызовите метод внутри onMessageReceived метода; вот так просто измените свои переменные

 String title = Objects.requireNonNull(remoteMessage.getNotification()).getTitle();
    String text = remoteMessage.getNotification().getBody();
    String dataKey = remoteMessage.getData().get("title");                      
openAnotherApp(remoteMessage,getApplicationContext(),title,text, 
   remoteMessage.getData().get("title"));