setActionButton只接受第一个pendingIntent

时间:2016-03-14 13:10:12

标签: android chrome-custom-tabs

使用构建器构建CustomTabsIntent并设置setActionButton:

new CustomTabsIntent.Builder(getSession())
            .setActionButton(getShareIcon(),
                             "Share text",
                             getShareIntent(),
                             true)
            .build()

getShareIntent的粗略实现:

@NonNull
private PendingIntent getShareIntent() {
    Intent shareIntent = new Intent(mContext, ShareBroadcastReceiver.class);
    shareIntent.putExtra("extra", someValue);
    return PendingIntent.getBroadcast(mContext, 0, shareIntent, 0);
}

我希望在我的广播接收器中获取额外的内容。它可以工作,但当我用不同的" someValue"重建它时。我收到了初始的someValue。

自定义标签似乎只发送初始意图并忽略更新的意图,直到重新启动自定义标签服务。

未记录该行为。这是一个错误吗?

1 个答案:

答案 0 :(得分:4)

这是问题

@NonNull
private PendingIntent getShareIntent() {
   Intent shareIntent = new Intent(mContext, ShareBroadcastReceiver.class);
   shareIntent.putExtra("extra", someValue);
   return PendingIntent.getBroadcast(mContext, 0, shareIntent, 0);
}

第二个参数是requestCode,对于不同的广播

应该是不同的

替换

PendingIntent.getBroadcast(mContext, 0, shareIntent, 0);

PendingIntent.getBroadCast(mContext, requestCode , shareIntent, 0}

每次生成不同的requestCode