gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:58:58 25 4
gpt4 key购买 nike

当我点击在后台运行的通知时,它总是调用 MainActivity,当我在应用程序中单击时,我从 Firebase Cloud Messing 发送了 url,它可以打开我创建的 WebView,但如果我在关闭应用程序时单击它,它总是调用 MainActivity。没有任何错误,我认为它不会调用任何 if-clause 。请帮忙,对不起我的英语。

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)类 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());
}

`

最佳答案

您必须读取传入的 Intent OnCreate()

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

然后您可以分解传入的 Uri 请求:

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

然后是条件,你想启动什么 Activity :

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

关于android - 当我点击在后台运行的通知时,它总是调用 MainActivity ,我如何调用我的 WebVIew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57129987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com