亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通知欄Notification在不同手機上顯示的問題總結

發布時間:2020-05-29 05:54:27 來源:網絡 閱讀:13711 作者:fanwei4751 欄目:移動開發

可以參照http://blog.csdn.net/vipzjyno1/article/details/25248021,這里面關于通知的寫的不錯,也很全面,我的這篇主要是記錄自己在適配上遇到的問題。


通知的統一的創建方式:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext);

而通知的管理則是使用NotificationManager是用來管理通知的,使用如下:先初始化用到的系統服務,然后調用notify(int notifyId,Notification notification)使用

NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService(mContext.NOTIFICATION_SERVICE);

mNotificationManager.notify(105, mBuilder.build());


接下來描述一下builder中的使用問題:(以下使用機型ZTE-U807(刷機DUI桌面),三星A5,堅果手機進行測試)

1、手機上不設置setSmallIcon就不會顯示通知但是三星和中興手機會有通知振動的提示

mBuilder.setSmallIcon(R.drawable.notify_icon).setLargeIcon(bigIcon);


2、不同手機上設置setSmallIcon位置顯示不一致

通知欄Notification在不同手機上顯示的問題總結通知欄Notification在不同手機上顯示的問題總結

(1)兩者都設置mBuilder.setSmallIcon(R.drawable.notify_icon).setLargeIcon(bigIcon);

堅果手機顯示:ticker通知顯示的是小圖標SmallIcon ,A區域顯示應用圖標,E區域顯示的是小圖標SmallIcon

三星手機顯示:ticker通知顯示的是小圖標,A區域顯示的是大圖標,E區域顯示的是小圖標。

中興手機顯示:ticker通知顯示的是小圖標(centerCrop),A區域顯示的是大圖標,E區域顯示的是小圖標(但是很大,圖標占的區域過大,適配不行)

(2)只設置mBuilder.setSmallIcon(R.drawable.notify_icon)

堅果手機顯示:ticker通知顯示的是小圖標SmallIcon ,A區域顯示應用圖標,E區域不顯示。

三星手機顯示:ticker通知顯示的是小圖標,A區域顯示的是小圖標,E區域不顯示。

中興手機顯示:ticker通知顯示的是小圖標(centerCrop),A區域顯示的是小圖標,E區域不顯示。

3、自定義通知(注意里面的內容最好不要超過兩行,記得省略

/**
 * 自定義視圖通知
 */
public void showNotifyConfirm(String title,String content,String ticker) {
    // 先設定RemoteViews
  RemoteViews viewCustom = new RemoteViews(mContext.getPackageName(),R.layout.view_custom);
  // 設置對應IMAGEVIEW的ID的資源圖片
  viewCustom.setImageViewResource(R.id.custom_icon, R.drawable.icon);
  // view_custom.setInt(R.id.custom_icon,"setBackgroundResource",R.drawable.icon);
  viewCustom.setTextViewText(R.id.tv_custom_title, title);
  viewCustom.setTextViewText(R.id.tv_custom_content,content);
  viewCustom.setTextViewText(R.id.tv_custom_time,refFormatNowDate());
  // 設置時間顯示
  viewCustom.setViewVisibility(R.id.tv_custom_time, View.GONE);
  NotificationCompat.Builder mBuilder = new Builder(mContext);
  mBuilder.setAutoCancel(true)
      .setTicker(ticker)
    .setSmallIcon(R.drawable.btn_prev)//小圖標
    .setContent(viewCustom)
    //.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL))
    .setWhen(System.currentTimeMillis())//通知產生的時間,會在通知信息里顯示
    .setPriority(Notification.PRIORITY_DEFAULT)//設置該通知優先級
    .setOngoing(false);//不是正在進行的 ,true為正在進行 效果和.flag一樣;
  mNotificationManager.notify(105, mBuilder.build());
}


顯示結果分析如下:

堅果手機顯示:ticker通知顯示的是小圖標SmallIcon ,D區域顯示的是應用圖標,紫色區域是應用名稱,點擊下拉箭頭收起或展開新通知。下面區域是自定義布局區域。

通知欄Notification在不同手機上顯示的問題總結通知欄Notification在不同手機上顯示的問題總結

三星手機顯示:ticker通知顯示的是小圖標,A區域顯示的是自定義圖標,不管設置不設置大圖標都不顯示大圖標

通知欄Notification在不同手機上顯示的問題總結通知欄Notification在不同手機上顯示的問題總結

中興手機顯示:ticker通知顯示的是小圖標(centerCrop),A區域顯示的是大圖標,B區域顯示的是自定義圖標。(如果不設置大圖標,則沒有A區域的顯示,只有自定義布局的顯示,C區域一般兩行就可以了,涉及到適配問題)

通知欄Notification在不同手機上顯示的問題總結通知欄Notification在不同手機上顯示的問題總結

4、點擊通知欄,通過receiver處理跳轉后的事情(在manifest文件中注冊時一定要加上export=true的屬性,不然大部分手機都無法收到onreceive

/**
 * 顯示通知欄點擊跳轉在receiver中處理
 **/
public void showIntentReceiverNotify(String title,String content,String ticker,String pid) {
    NotificationCompat.Builder mBuilder = initNotify();
  mBuilder.setAutoCancel(true)
      .setContentTitle(title)
    .setContentText(content)
    .setTicker(ticker);
  Intent clickIntent = new Intent(mContext, ClickNotifyReceiver.class);
  clickIntent.setAction("com.qihoo.gamecenter.pluginapk.ClickNotifyReceiver.click");
  clickIntent.putExtra("pushId", pid);
  PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
  mBuilder.setContentIntent(pendingIntent);
            
  mNotificationManager.cancel(110);
  mNotificationManager.notify(110, mBuilder.build());
}


在傳值的時候,setContentIntent(PendingIntent intent)這個方法,PendingIntent可以設置執行次數,主要用于遠程服務通信、鬧鈴、通知、啟動器、短信中。

Notification支持多種Intent來響應單擊事件、消除事件、處理緊急狀態的全屏事件等,setContentIntent(PendingIntent intent)來處理以上這么多的事件。

PendingIntent的位標識符:

FLAG_ONE_SHOT表示返回的PendingIntent僅能執行一次,執行完后自動取消

FLAG_NO_CREATE表示如果描述的PendingIntent不存在,并不創建相應的PendingIntent,而是返回NULL

FLAG_CANCEL_CURRENT表示相應的PendingIntent已經存在,則取消前者,然后創建新的PendingIntent,這個有利于數據保持為最新的,可以用于即時通信的通信場景

FLAG_UPDATE_CURRENT表示更新的PendingIntent


具體的PendingIntent的使用,可以參照 http://blog.csdn.net/vipzjyno1/article/details/25248021,這里面關于通知的寫的不錯,也很全面,我的這篇主要是記錄自己在適配上遇到的問題。

備注:點擊通知欄,通過receiver處理跳轉后的事情,發廣播和接收廣播這里我們就不做詳細描述了


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长岭县| 山东省| 涪陵区| 鄂托克前旗| 扶沟县| 梁山县| 社会| 凌云县| 神池县| 大竹县| 张北县| 枣阳市| 临洮县| 门头沟区| 新郑市| 清涧县| 大关县| 庄浪县| 陇川县| 塔河县| 镇江市| 东源县| 东阳市| 奉贤区| 黄骅市| 武安市| 玛沁县| 郁南县| 武陟县| 巧家县| 仁化县| 溧阳市| 策勒县| 铜山县| 鹤岗市| 云龙县| 翼城县| 阿坝县| 固原市| 广宗县| 内黄县|