三星手機(jī) Notification PendingIntent 傳值問(wèn)題

三星手機(jī) Notification PendingIntent 傳值問(wèn)題

PendingIntent簡(jiǎn)單介紹

通知欄跳轉(zhuǎn)

  • 啟動(dòng)Activity
//獲取一個(gè)用于啟動(dòng) Activity 的 PendingIntent 對(duì)象
public static PendingIntent getActivity(Context context, int requestCode,Intent intent, @Flags int flags)
  • 啟動(dòng)Service
//獲取一個(gè)用于啟動(dòng) Activity 的 PendingIntent 對(duì)象
public static PendingIntent getService(Context context, int requestCode,Intent intent, @Flags int flags)
  • 發(fā)送廣播
//獲取一個(gè)用于啟動(dòng) Activity 的 PendingIntent 對(duì)象
public static PendingIntent getBroadcast(Context context, int requestCode,Intent intent, @Flags int flags)

參數(shù)說(shuō)明

  • context 上下文

  • requestCode 標(biāo)志位-標(biāo)記不同的pendingIntent

  • intent 意圖 用于跳轉(zhuǎn)activity 、啟動(dòng)Service 聪富、發(fā)送廣播來(lái)構(gòu)建PendingIntent的意圖

  • flags PendingIntent的行為

PendingIntent的構(gòu)建中的flags FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT

  • FLAG_ONE_SHOT

API29官方文檔:

 Flag indicating that this PendingIntent can be used only once.
 For use with {@link #getActivity}, {@link #getBroadcast}, and
 {@link #getService}. <p>If set, after
 {@link #send()} is called on it, it will be automatically
 canceled for you and any future attempt to send through it will fail.

意思就是:利用 FLAG_ONE_SHOT獲取的PendingIntent只能使用一次,即使再次利用上面三個(gè)方法重新獲取掘宪,再使用PendingIntent也將失敗

  • FLAG_NO_CREATE

API29官方文檔:

Flag indicating that if the described PendingIntent does not
already exist, then simply return null instead of creating it.
For use with {@link #getActivity}, {@link #getBroadcast}, and
{@link #getService}.

意思就是:利用FLAG_NO_CREAT獲取的PendingIntent穴肘,若描述的Intent不存在則返回NULL值.

  • FLAG_CANCEL_CURRENT

API29官方文檔:

Flag indicating that if the described PendingIntent already exists,
the current one should be canceled before generating a new one.
For use with {@link #getActivity}, {@link #getBroadcast}, and
{@link #getService}. <p>You can use
this to retrieve a new PendingIntent when you are only changing the
extra data in the Intent; by canceling the previous pending intent,
this ensures that only entities given the new data will be able to
launch it.  If this assurance is not an issue, consider
{@link #FLAG_UPDATE_CURRENT}.

意思就是:如果描述的PendingIntent已經(jīng)存在歇盼,則在產(chǎn)生新的Intent之前會(huì)先取消掉當(dāng)前的。你可用使用它去檢索新的Intent评抚,如果你只是想改變Intent中的額外數(shù)據(jù)的話豹缀。通過(guò)取消先前的Intent,可用確保只有最新的實(shí)體可用啟動(dòng)它盈咳。如果這一保證不是問(wèn)題,考慮flag_update_current边翼。

  • FLAG_UPDATE_CURRENT

API29官方文檔:

Flag indicating that if the described PendingIntent already exists,
then keep it but replace its extra data with what is in this new
Intent. For use with {@link #getActivity}, {@link #getBroadcast}, and
{@link #getService}. <p>This can be used if you are creating intents where only the
extras change, and don't care that any entities that received your
previous PendingIntent will be able to launch it with your new
extras even if they are not explicitly given to it.

意思就是:最經(jīng)常使用的是FLAG_UPDATE_CURRENT鱼响,因?yàn)槊枋龅腎ntent有 更新的時(shí)候需要用到這個(gè)flag去更新你的描述,否則組件在下次事件發(fā)生或時(shí)間到達(dá)的時(shí)候extras永遠(yuǎn)是第一次Intent的extras组底。

具體使用哪種flag可以根據(jù)具體需求和業(yè)務(wù)情況丈积。這里我們項(xiàng)目使用的是FLAG_UPDATE_CURRENT

項(xiàng)目中遇到的問(wèn)題

  • 我們?cè)谑褂肞endingIntent跳轉(zhuǎn)到相應(yīng)的Activity并且傳遞參數(shù)

在其他手機(jī)上,這個(gè)Activity里面都能接收到參數(shù)债鸡,但是測(cè)試發(fā)現(xiàn)只有在三星a8s這款機(jī)型上接收不到參數(shù)

部分代碼 PendingIntent跳轉(zhuǎn)相關(guān)代碼

 Intent resultIntent = new Intent(context, NewsDetailActivity.class);
//listItemEntity是一個(gè)Serializable序列化的實(shí)體類
 resultIntent.putExtra(NewsDetailActivity.ARG_DATA, listItemEntity);
 resultIntent.putExtra(NewsDetailActivity.ARG_FROM_PUSH, true);
pendingIntent = PendingIntent.getActivity(context, (int) itemEntity.getDetail_id(), resultIntent, PendingIntent.FLAG_CANCEL_CURRENT);

查找了很多網(wǎng)上解決方案:

1江滨,Intent添加flags的形式

resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED| Intent.FLAG_ACTIVITY_NEW_TASK)

2,Intent添加Action的形式

resultIntent.setAction("action")

但是結(jié)果都是不行

  • 解決過(guò)程

先采用String的形式隨便傳遞一個(gè)參數(shù)厌均,發(fā)現(xiàn)能夠接收到參數(shù)(到這兒已經(jīng)有解決思路了,而且確實(shí)也是這樣解決的)

然后用Parcelable 序列化傳值還是不行唬滑,最后的解決方案是通過(guò)String的形式傳遞,然后解決的

  • 額外思路

可以通過(guò)PendingIntent.getBroadcast 發(fā)送廣播棺弊,然后啟動(dòng)Activity傳遞參數(shù)(還沒(méi)有嘗試)
可以通過(guò)PendingIntent.getService 啟動(dòng)服務(wù)晶密,然后啟動(dòng)Activity傳遞參數(shù)(還沒(méi)有嘗試)

本文作者:銀進(jìn)(silver)
本文為原創(chuàng)作品,未經(jīng)允許不得轉(zhuǎn)載模她。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稻艰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侈净,更是在濱河造成了極大的恐慌尊勿,老刑警劉巖僧凤,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異元扔,居然都是意外死亡躯保,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門摇展,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吻氧,“玉大人,你說(shuō)我怎么就攤上這事咏连《⑺铮” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵祟滴,是天一觀的道長(zhǎng)振惰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)垄懂,這世上最難降的妖魔是什么骑晶? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮草慧,結(jié)果婚禮上桶蛔,老公的妹妹穿的比我還像新娘。我一直安慰自己漫谷,他們只是感情好仔雷,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舔示,像睡著了一般碟婆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惕稻,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天竖共,我揣著相機(jī)與錄音,去河邊找鬼俺祠。 笑死公给,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜘渣。 我是一名探鬼主播妓布,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宋梧!你這毒婦竟也來(lái)了匣沼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捂龄,失蹤者是張志新(化名)和其女友劉穎释涛,沒(méi)想到半個(gè)月后加叁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唇撬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年它匕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窖认。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豫柬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扑浸,到底是詐尸還是另有隱情烧给,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布喝噪,位于F島的核電站础嫡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酝惧。R本人自食惡果不足惜榴鼎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晚唇。 院中可真熱鬧巫财,春花似錦、人聲如沸哩陕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)萌踱。三九已至葵礼,卻和暖如春号阿,著一層夾襖步出監(jiān)牢的瞬間并鸵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工扔涧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留园担,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓枯夜,卻偏偏與公主長(zhǎng)得像弯汰,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子湖雹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361