简体   繁体   English

当我单击在后台运行的通知时,它总是调用 MainActivity ,我如何调用我的 WebVIew

[英]When I clicked notification run in background it's always call MainActivity , How I can call my WebVIew

When I clicked notification run in background it's always call MainActivity , I sent url from Firebase Cloud Messing when I click when I'm in application it can open WebView that I create but if I clicked when close application it's always call MainActivity.当我单击在后台运行的通知时,它总是调用 MainActivity ,当我在应用程序中单击时,我从 Firebase Cloud Messing 发送了 url,它可以打开我创建的 WebView,但是如果我在关闭应用程序时单击它,它总是调用 MainActivity。 No have any error and I think it not call any if-clause .没有任何错误,我认为它不会调用任何 if-clause 。 please help and sorry for my english .请帮助和抱歉我的英语。

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    public MyFirebaseMessagingService() {
        super();
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);


        if (remoteMessage.getData().size() <= 0){

            String title = remoteMessage.getNotification().getTitle();
            String body = remoteMessage.getNotification().getBody();

            MessageHelper.displayMessage(getApplicationContext(), title, body);
        }

        if(remoteMessage.getData().size() > 0){

            String title = remoteMessage.getNotification().getTitle();
            String body = remoteMessage.getNotification().getBody();
            String url = remoteMessage.getData().get("url");

            MessageHelper.displayNotification(getApplicationContext(), title, body, url);
        }
    }

}

public class MessageHelper {公共类 MessageHelper {

public static void displayMessage(Context context, String title, String body){

    Intent intent = new Intent(context, NewsFragment.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

    PendingIntent pendingIntent = PendingIntent.getActivity(
            context,
            0,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT
    );

    NotificationCompat.Builder builder =
            new NotificationCompat.Builder(context, MainActivity.CHANNEL_ID)
                    .setSmallIcon(R.drawable.ic_notifications)
                    .setContentTitle(title)
                    .setContentText(body)
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true);

    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
    notificationManagerCompat.notify(0, builder.build());
}

public static void displayNotification(Context context, String title, String body, String url){

    Intent intent = new Intent(context, NewsWebView.class);
    intent.putExtra("id", url);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder builder =
            new NotificationCompat.Builder(context, MainActivity.CHANNEL_ID)
                    .setSmallIcon(R.drawable.ic_notifications)
                    .setWhen(System.currentTimeMillis())
                    .setContentTitle(title)
                    .setContentText(body)
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                    .setContentIntent(contentIntent)
                    .setAutoCancel(true);

    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
    notificationManagerCompat.notify(1 , builder.build());
}

} }

`

You've to read incoming intent OnCreate()你必须阅读传入的意图OnCreate()

Intent read_int = getIntent();
Log.d("INTENT", read_int.toUri(0));

Then you can break down the incoming Uri request with:然后你可以分解传入的 Uri 请求:

String uri = read_int.getStringExtra("uri");   // your data sent over FCM

And then condition, what activity you want to launch:然后条件,你想启动什么活动:

if(uri != null){
   Intent openWV = new Intent(CurrentActivity.this, MyWebViewActivity.class);
   openWV.putExtra("open_url", uri);   // optional parameters
   CurrentActivity.this.startActivity(openWV);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM