2016-03-14 4 views
0

При создании CustomTabsIntent с помощью строителя и установки setActionButton:setActionButton принимает только первый pendingIntent

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

Я espect, чтобы получить содержание Лишние в моем радиовещательный приемник. Он работает, но когда я перестраиваю его с помощью другого «someValue», я получаю initaial someValue.

Пользовательские вкладки, похоже, только отправляют первоначальное намерение и игнорируют обновленные намерения до тех пор, пока служба пользовательской вкладки не будет перезапущена.

Поведение не задокументировано. Это ошибка?

+0

Спасибо @Selvin PendingIntent.FLAG_UPDATE_CURRENT, поскольку последний параметр действительно работал. –

ответ

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} 

Роды te различный requestCode каждый раз

+0

Спасибо, это действительно сработало. –

+0

, то, пожалуйста, отметьте его thankx @ PawełPolański –

+0

Другим вариантом будет использование FLAG_UPDATE_CURRENT, чтобы изменить значение дополнительного. http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT – andreban

Смежные вопросы