繁体   English   中英

带有待定 URL-Intent 的 Android 通知 - 仅通过单击通知

[英]Android Notification with pending URL-Intent - only by clicking the notification

我正在尝试为通知创建一个挂起的 URL-Intent,如果用户单击通知,则会调用该通知。

问题是 Intent 是通过创建通知来调用的,因此 url 会立即在 Web 浏览器中被调用。 我想防止这种情况,但不知道如何?

这是我的代码

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("google.com"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

PendingIntent pendingIntent = PendingIntent.getActivity(MyApp.getContext(), 0, intent, 0);

NotificationCompat.Builder builder = new NotificationCompat.Builder(MyApp.getContext(), "MyApp")
                    .setSmallIcon(R.drawable.ic_notification)
                    .setContentTitle("my App")
                    .setContentText("Click here to call the URL")
                    .setStyle(new NotificationCompat.BigTextStyle().bigText("...."))
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
                    ;

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(MyApp.getContext());

notificationManager.notify(getNotificationId(), builder.build());

如何防止在“通知”调用后执行意图?

只有当用户单击通知时才应执行意图。

try this:
public void notification()
{
 Intent notificationIntent = new Intent(Intent.ACTION_VIEW);
 notificationIntent.setData(Uri.parse("https://www.google.com/"));

@SuppressLint("WrongConstant") PendingIntent pending = 
PendingIntent.getActivity(this, 0, notificationIntent, 
Intent.FLAG_ACTIVITY_NEW_TASK);
String channelId = getString(R.string.app_name);
NotificationChannel notificationChannel = null;
NotificationManagerCompat notificationManager = 
 NotificationManagerCompat.from(getApplicationContext());

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
    notificationChannel = new NotificationChannel(channelId, channelId,  
NotificationManager.IMPORTANCE_DEFAULT);
    notificationChannel.setDescription(channelId);
    notificationChannel.setSound(null, null);
    notificationManager.createNotificationChannel(notificationChannel);
}
NotificationCompat.Builder builder = new 
NotificationCompat.Builder(getApplicationContext(), channelId)
        .setSmallIcon(R.drawable.ic_launcher_background)
        .setContentTitle("my App")
        .setContentText("Click here to call the URL")
        .setStyle(new NotificationCompat.BigTextStyle().bigText("...."))
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setContentIntent(pending)
        .setAutoCancel(true)
        ;


  notificationManager.notify(0, builder.build());
}

暂无
暂无

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

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