精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android探索之旅 | 為應用添加角標(Badge)

移動開發(fā) Android
角標,英語是badge,也就是“徽章,像章,獎章; 象征,標記”的意思。一般來說,應用的角標是用來標記有多少條提醒(Notification)沒讀(unread),一旦點擊提示進應用閱讀了,角標也會消失。

[[184821]]

– 簡書作者 謝恩銘 轉載請注明出處

需求簡介

角標是什么意思呢?

看下圖即可明了:   

 

可以看到圖中的樂購這個app右上角的紅色的圓圈,里面有10這個數(shù)字的,就是一種角標。

角標,英語是badge,也就是“徽章,像章,獎章; 象征,標記”的意思。

一般來說,應用的角標是用來標記有多少條提醒(Notification)沒讀(unread),一旦點擊提示進應用閱讀了,角標也會消失。

Android角標起源

角標原本是蘋果的iOS中的東西,Android原生并不支持角標,因為Google的意思是讓大家用Notification(提示欄)即可,角標實在大有讓處女座“跳崖”的風險。幸好我不是…

最近公司的項目中,客戶的一個新需求是在我們的加密信息應用上加上角標功能,因為我們的合作伙伴是三星(可以參看我的這篇文章:程序員在法國 | 我被法國國防部盯上了!),因此我就去網(wǎng)上找相關資料。

找的時候,才知道上面所說的Android原生不支持角標一事。不過無妨,厲害的Android第三方廠商可以通過在自定義的Launcher(啟動器)中操作來實現(xiàn)添加角標。

我在第一時間當然是去找三星的移動設備如何添加角標,不過卻有幸找到了Github上的比較普適的項目。

把我導向Github的自然是Stack Overflow,而把我導向Stack Overflow的就是Google,因此我會說:為什么程序員一定要會用Google和Stack Overflow? 。

不錯的github項目

  1. 一般來說,現(xiàn)在被引用最多的Android添加和去除角標的Github項目是這位中國人寫的:https://github.com/leolin310148/ShortcutBadger這個項目挺不錯,雖然更新不是特別勤快,但最近一次更新是在2016年10月31日,也就是兩個月前,還可以接受。
  2. 《Android群英傳》和《Android群英傳:神兵利器》的作者 徐宣生 也在自己的Github上建了一個項目:https://github.com/xuyisheng/ShortcutHelper ,挺有意思,里面還有號稱“瘋狂模式”的為所有在手機桌面上的應用加上99的角標數(shù)的功能,當然了,去除的代碼也有,不然處女座豈不是要暈了~

添加角標的原理就是發(fā)送一個Broadcast(廣播),在廣播的Intent中指定需要被添加角標的應用的packageName(包名),className(類名),count(角標數(shù)目)。當然了,不同廠商的手機的角標操作的Intent的action是不一樣的。

因此,我們如果要給自己的手機里的應用添加角標,只需要簡單的利用上面兩個項目中的代碼即可,一般不需要把全部項目搬過來。當然了,如果你要適配所有手機,那么可以全盤引用項目。

比如我要給三星的手機的應用添加角標,那么我只需要做以下的幾步即可:

在AndroidManifest.xml中添加讀取和寫入角標的權限:

  1. <uses-permission android:name="com.sec.android.provider.badge.permission.READ" /> 
  2. <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />  

自己寫一個類,隨便取名字,比如叫做 BadgeUtils,在類中添加如下內容:

  1. public class BadgeUtils { 
  2.   private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE"
  3.   private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count"
  4.   private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name"
  5.   private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name"
  6.  
  7.   public static void setBadgeCount(Context context, ComponentName componentName, int badgeCount) { 
  8.     Intent intent = new Intent(INTENT_ACTION);      
  9.     intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount);     
  10.     intent.putExtra(INTENT_EXTRA_PACKAGENAME, componentName.getPackageName());     
  11.     intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, componentName.getClassName()); 
  12.     context.sendBroadcast(intent);   
  13.   } 
  14.  

使用上面的代碼時,只需要傳入三個參數(shù),也就是:

  1. Context : 應用的Context。簡單。
  2. ComponentName :組件名,略有點麻煩。可以這樣來獲取(applicationContext就是應用的Context) :
    1. applicationContext.getPackageManager() 
    2. .getLaunchIntentForPackage(applicationContext.getPackageName()) 
    3. .getComponent() 
  3. badgeCount :角標的數(shù)目,例如10。簡單。

當然了,如果你不想要傳入三個參數(shù)這么麻煩,你也可以再寫一個方法getLauncherClassName,就只需要傳入兩個參數(shù)即可。BadgeUtils中的代碼變?yōu)椋?nbsp;

  1. public class BadgeUtils { 
  2.   private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE"
  3.   private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count"
  4.   private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name"
  5.   private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name"
  6.  
  7.   public static void setBadgeCount(Context context, int badgeCount) { 
  8.     String launcherClassName = getLauncherClassName(context); 
  9.     if (launcherClassName == null) { 
  10.       return
  11.     } 
  12.  
  13.     Intent intent = new Intent(INTENT_ACTION);      
  14.     intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount);     
  15.     intent.putExtra(INTENT_EXTRA_PACKAGENAME, context.getPackageName());     
  16.     intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, launcherClassName); 
  17.  
  18.     context.sendBroadcast(intent);   
  19.   } 
  20.  
  21.   private static String getLauncherClassName(Context context) { 
  22.     PackageManager pm = context.getPackageManager(); 
  23.  
  24.     Intent intent = new Intent(Intent.ACTION_MAIN);  
  25.     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
  26.  
  27.     List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0); 
  28.     for (ResolveInfo resolveInfo : resolveInfos) { 
  29.       String pkgName = resolveInfo.activityInfo.applicationInfo.packageName; 
  30.       if (pkgName.equalsIgnoreCase(context.getPackageName())) { 
  31.         String className = resolveInfo.activityInfo.name
  32.         return className; 
  33.       } 
  34.     } 
  35.     return null;  
  36.   } 
  37.  

使用時傳入兩個參數(shù)即可:

  1. Context : 應用的Context。
  2. badgeCount :角標的數(shù)目,例如10。

清除角標

要清除應用的角標就很簡單了,給badgeCount傳入0即可。

  1. BadgeUtils.setBadgeCount(context,        
  2. context.getPackageManager()                
  3. .getLaunchIntentForPackage(context.getPackageName())                 
  4. .getComponent(),         
  5. 0);  

或者

  1. BadgeUtils.setBadgeCount(context, 0); 

小問題糾錯

上面的 https://github.com/leolin310148/ShortcutBadger 這個項目中,基本已經(jīng)包含了大多數(shù)可以定制角標的Android生產廠商的添加角標的代碼實現(xiàn),不過它也提到:

三星和LG(這兩個難兄難弟)的代碼有很多類似,連角標處理的廣播的Intent中的action也是一樣的,都是:

  1. "android.intent.action.BADGE_COUNT_UPDATE" 

但是作者在三星和LG的兩個角標操作實現(xiàn)類中寫了注釋:

  1. // Deprecated, Samsung devices will use DefaultBadger 
  2. // Deprecated, LG devices will use DefaultBadger  

意思是“三星和LG的實現(xiàn)代碼已經(jīng)Deprecated(失效了),請用DefaultBadger類”。

因此,這兩個需要用 https://github.com/leolin310148/ShortcutBadger/blob/master/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/DefaultBadger.java 中的實現(xiàn):

  1. private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE"
  2. private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count"
  3. private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name"
  4. private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name"
  5.  
  6. @Override 
  7. public void executeBadge(Context context, ComponentName componentName, int badgeCount) throws ShortcutBadgeException { 
  8.   Intent intent = new Intent(INTENT_ACTION); 
  9.   intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount); 
  10.   intent.putExtra(INTENT_EXTRA_PACKAGENAME, componentName.getPackageName()); 
  11.   intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, componentName.getClassName()); 
  12.  
  13.   if (BroadcastHelper.canResolveBroadcast(context, intent)) { 
  14.     context.sendBroadcast(intent); 
  15.   } else { 
  16.     throw new ShortcutBadgeException("unable to resolve intent: " + intent.toString()); 
  17.   } 
  18.  

不過上面的代碼有一個小問題,就是那句

  1. if (BroadcastHelper.canResolveBroadcast(context, intent)) { 

在有些設備(比如Samsung Galaxy S5)上會拋出異常(Exception),找不到處理”android.intent.action.BADGE_COUNT_UPDATE”這個Intent的BroadcastReceiver,很奇怪。

但有些設備(比如Samsung Galaxy A5)上又運行正常,沒有拋出異常。

解決辦法是去除這一個檢測,把

  1. if (BroadcastHelper.canResolveBroadcast(context, intent)) { 
  2.   context.sendBroadcast(intent); 
  3. else { 
  4.   throw new ShortcutBadgeException("unable to resolve intent: " + intent.toString()); 
  5.  

替換為簡單的

  1. context.sendBroadcast(intent); 

就可以了。

也就是我上面自己實作時的代碼。

總結

  1. Android的角標添加和移除畢竟是基于各大手機廠商的Launcher的定制,因此不是正統(tǒng)的Android技巧,隨著廠商的Launcher的改變,也許你的代碼未來就不一定有用了,因此需要不斷修改,“推陳出新”。
  2. 不過正所謂“生命在于折騰”,而這也是我們喜歡Android系統(tǒng)的原因。這個萌萌的機器人可以經(jīng)得起我們隨意折騰,在嵌入式領域的應用前途也是很不錯的。
  3. 大家在平時學習編程的時候,也可以把自己的代碼或經(jīng)驗匯總到Github項目,一來惠己利人,二來提高自己的業(yè)界知名度。
責任編輯:龐桂玉 來源: Android開發(fā)中文站
相關推薦

2023-06-28 10:48:09

平臺框架高性能

2010-05-06 17:56:15

Visual Stud

2010-02-24 15:04:54

Visual Stud

2015-11-05 17:38:32

東方通蘇州工業(yè)園大數(shù)據(jù)應用

2022-10-14 16:30:17

2012-07-30 09:41:04

Android搜索功能

2017-04-18 13:55:24

運維云計算WOT

2019-09-25 11:27:07

區(qū)塊鏈比特幣加密貨幣

2020-10-10 14:36:10

Python

2020-10-12 00:41:52

Python變量

2015-03-05 11:28:51

Linux桌面環(huán)境終極指南

2013-10-15 15:17:47

程序員數(shù)據(jù)挖掘

2020-10-11 23:45:55

Python解釋器

2023-07-26 11:22:44

騰訊趙裕

2025-02-07 14:42:59

2021-09-15 10:19:15

鴻蒙HarmonyOS應用

2020-06-12 09:20:33

前端Blob字符串

2021-10-14 08:07:33

Go 應用Prometheus監(jiān)控

2022-06-15 22:15:47

CSS視覺還原

2021-03-08 16:12:35

AIOpsIT人工智能
點贊
收藏

51CTO技術棧公眾號

日韩激情电影| 999av视频| 欧美三级伦理在线| 69堂成人精品免费视频| 青草视频在线观看视频| 男人的天堂在线视频| 久久精品国产99久久6| 欧美理论电影在线播放| 亚洲成人日韩在线| 久久精品黄色| 午夜精品久久久久久久99水蜜桃| 日本中文不卡| 欧美美女操人视频| 青青草原国产在线视频| 日本h片在线| 国产午夜亚洲精品理论片色戒 | 日本不卡高清视频| 欧美成人免费视频| 国产人妻大战黑人20p| 国产精品久久免费视频| 黑人巨大精品欧美一区二区三区| 9999在线观看| 日韩资源在线| 国产精品综合网| 欧美最顶级丰满的aⅴ艳星| 顶臀精品视频www| 久久99国产精品视频| 日韩一区二区三区视频| 精品久久久久久久无码| av女在线播放| 亚洲免费资源在线播放| 天堂资源在线亚洲视频| 日本精品久久久久| 精品在线观看视频| 国产精品久久久久av| 日本三级2019| 最新国产精品久久久| 在线激情影院一区| 香蕉视频黄色在线观看| 91精品入口| 欧美一区日韩一区| 欧美男女交配视频| 日韩中文视频| 色视频一区二区| 成人免费观看cn| 日本电影在线观看| 亚洲欧美视频在线观看| 在线不卡日本| 在线观看国产原创自拍视频| 国产午夜精品美女毛片视频| 欧美连裤袜在线视频| 粉嫩av蜜桃av蜜臀av| 亚洲欧美一区二区三| 国产成人精品亚洲日本在线桃色 | 国产成人av影院| 91精品久久久久久久久久| 波多野结衣视频在线观看| 国产精品久久国产愉拍| 69av在线视频| 日日噜噜噜噜人人爽亚洲精品| 亚洲理伦在线| 韩国福利视频一区| 日本系列第一页| 影院欧美亚洲| 91禁外国网站| 美女又爽又黄免费视频| 午夜影院日韩| 国产97色在线|日韩| 成人午夜视频在线播放| 性欧美xxxx大乳国产app| 2019中文字幕在线| 亚洲免费在线视频观看| 日韩精品成人一区二区在线| 国产成人av在线播放| 久久久999久久久| 免播放器亚洲一区| 亚洲字幕一区二区| 亚洲第一成年人网站| 成人做爰69片免费看网站| 黑人巨大精品欧美一区二区小视频 | 在线欧美日韩国产| 自拍偷拍一区二区三区四区| 日韩色性视频| 精品剧情在线观看| a视频免费观看| 激情综合网站| 久久深夜福利免费观看| 国产精品7777| 葵司免费一区二区三区四区五区| 国产美女被下药99| 成人av免费播放| 日韩a在线观看| 国模吧视频一区| 91高清免费在线观看| 999视频在线| 国产精品一级在线| 蜜桃视频在线观看91| 999国产在线视频| 亚洲一区视频在线观看视频| 成年人视频在线免费| 精品国产一区二| 日韩电影中文字幕av| 免费精品在线视频| 亚洲区欧美区| 欧美有码在线观看| 国产又粗又猛又爽又黄的| 成人av电影在线播放| 亚洲激情电影在线| 51精品视频| 在线电影一区二区三区| aaaaa一级片| 性欧美欧美巨大69| 国产成人精品综合久久久| 国产不卡av在线播放| 久久免费视频一区| 老司机激情视频| 国产成人精品一区二区三区在线 | 操人视频免费看| 天堂在线精品| 久久久久国产一区二区三区| 中文字幕 自拍偷拍| 成人av一区二区三区| 性欧美18一19内谢| 日本综合久久| 亚洲精品电影网站| 深夜福利影院在线观看| 美女视频黄频大全不卡视频在线播放| 国产综合精品一区二区三区| www视频在线免费观看| 欧美性猛片aaaaaaa做受| 欧产日产国产精品98| 欧美视频一区| 91中文字幕在线| 91精品国产91久久久久游泳池 | 中文字幕在线观看高清| 亚洲一区二区电影| 亚洲色图视频网站| 国产精品欧美激情在线观看| 国产91精品入| 欧美激情视频在线观看| av网站免费大全| 国产精品每日更新| 激情五月婷婷久久| 久久91麻豆精品一区| 青青精品视频播放| 深夜影院在线观看| 亚洲.国产.中文慕字在线| 中文字幕第九页| 欧美三级网页| 亚洲xxx大片| 黄色av电影在线播放| 欧美美女一区二区| 成人涩涩小片视频日本| 久久国产精品第一页| 亚洲精品国产精品国自产观看| 成人看片网页| 伊人男人综合视频网| 夜夜爽妓女8888视频免费观看| 久久久久国产精品人| 欧美两根一起进3p做受视频| 精品国产成人| 国产精品视频一区二区高潮| 一区二区三区视频在线观看视频| 欧美年轻男男videosbes| 中文字幕求饶的少妇| 精品一区二区免费| 免费看污污视频| 91精品短视频| 欧美亚洲另类视频| 黄色av网站在线| 欧美人牲a欧美精品| 卡通动漫亚洲综合| 国产91色综合久久免费分享| 国产人妻777人伦精品hd| 青青视频一区二区| 日韩免费在线免费观看| 伊人免费在线| 日韩片之四级片| 日韩av电影网| 久久综合狠狠综合久久激情| 免费看污污网站| 一级特黄aaa大片| 爱爱精品视频| 欧美黑人国产人伦爽爽爽| 天天舔天天干天天操| 激情综合婷婷| 日韩视频免费大全中文字幕| 亚洲成人中文字幕在线| 欧美性少妇18aaaa视频| a一级免费视频| 成人av网站在线| 五月天婷婷激情视频| 中出一区二区| 久久伊人一区| 国产精品777777在线播放| 久久久久久国产精品三级玉女聊斋| 视频在线观看你懂的| 欧美午夜影院一区| 精品无码久久久久| 久久精品视频在线免费观看| 亚洲高清视频免费| 日韩一级在线| 亚洲精品一区国产精品| 国产成人aa在线观看网站站| 国产精品极品美女在线观看免费| 羞羞的视频在线看| 精品爽片免费看久久| 夜夜爽8888| 精品人伦一区二区三区蜜桃免费 | 国产免费一区二区三区最新不卡| 大伊人狠狠躁夜夜躁av一区| 国产黄色的视频| 国产亚洲精品aa午夜观看| 最新日本中文字幕| 久久精品国产在热久久| 秋霞无码一区二区| 五月开心六月丁香综合色啪| 久久久久久久久久码影片| 韩国三级成人在线| 国产精品久久久久久亚洲调教| av在线加勒比| 蜜月aⅴ免费一区二区三区| 国产51人人成人人人人爽色哟哟| 亚洲国产精品专区久久| 在线观看亚洲一区二区| 精品女厕一区二区三区| 中文字幕在线观看成人 | 老妇女50岁三级| 国产三级精品三级| 久久亚洲AV成人无码国产野外 | 国产美女免费无遮挡| 懂色av一区二区夜夜嗨| 婷婷激情综合五月天| 石原莉奈在线亚洲二区| 欧美 日韩 国产 高清| 日本三级中文字幕| 成人97人人超碰人人99| 乳色吐息在线观看| 国产麻豆91精品| 天堂av在线8| 美女网站色91| 色悠悠久久综合网| 日韩二区三区四区| 国产极品美女高潮无套久久久| 国产精品久久777777毛茸茸 | 成人无码av片在线观看| 久久在线观看免费| 西西大胆午夜视频| 99久精品国产| 亚洲一区二区三区综合| 99精品欧美一区二区三区小说| 中文字幕天堂av| 成人国产亚洲欧美成人综合网| 高清中文字幕mv的电影| 成人精品视频一区二区三区| 一本色道久久hezyo无码| 国产成人免费视频网站高清观看视频| 黄色a级三级三级三级| 国产乱子伦视频一区二区三区| www.国产福利| 国产一区二区三区蝌蚪| wwwxxx色| 99久久国产综合精品色伊| 中文成人无字幕乱码精品区| 91亚洲午夜精品久久久久久| 黄色工厂在线观看| 国产女人水真多18毛片18精品视频| 激情五月深爱五月| 中文字幕一区在线观看视频| 成人免费视频网站入口::| 亚洲综合视频网| 欧美成人aaaaⅴ片在线看| 懂色aⅴ精品一区二区三区蜜月| 4438国产精品一区二区| 91成人免费网站| 国产又黄又粗又硬| 欧美成va人片在线观看| 日韩一区免费视频| 亚洲欧美综合v| 日韩子在线观看| 欧美肥婆姓交大片| 伊人久久av| 成人免费在线视频网站| 国产精品巨作av| 日本一区二区在线视频| 亚洲区综合中文字幕日日| 久久久久久www| 日本午夜精品一区二区三区电影| 亚洲成人手机在线观看| av亚洲精华国产精华| 国产sm调教视频| 欧美人与物videos另类xxxxx| 亚洲美女动态图120秒| 手机看片福利在线观看| 日韩视频中文字幕| 麻豆网站免费在线观看| 国产精品视频免费观看www| xxxx日韩| 亚洲日本无吗高清不卡| 影音先锋久久资源网| 手机在线成人免费视频| www.亚洲精品| 天天爽天天爽天天爽| 日韩欧美999| 亚洲av综合色区无码一区爱av| 亚洲人成在线观看| 男插女视频久久久| 国产精品久久久久福利| 哺乳一区二区三区中文视频| 污视频在线免费观看一区二区三区 | 另类专区亚洲| 91精品国产一区二区三区动漫| 久久不见久久见国语| 国产欧美日韩小视频| 国产一区二区三区在线观看免费视频| 亚洲色图14p| 一区二区三区蜜桃网| 波多野结衣在线观看一区| 亚洲成色777777女色窝| 成人福利网站| 国产精品久久久久高潮| 牛牛影视一区二区三区免费看| 中文字幕第一页亚洲| 首页综合国产亚洲丝袜| 美女又爽又黄免费| 亚洲高清免费观看| www.蜜桃av.com| 精品国产一区久久久| japanese23hdxxxx日韩| 久久婷婷开心| 亚洲理伦在线| 催眠调教后宫乱淫校园| 亚洲精品欧美综合四区| 91精品视频免费在线观看 | 91亚洲天堂| 成人黄色免费片| 日韩大片在线| 亚洲成人av免费看| 国产婷婷色一区二区三区四区 | 欧美猛男超大videosgay| 你懂的免费在线观看| 91精品国产高清久久久久久久久| 在线精品视频一区| 男人添女人下部视频免费| 国产精品88888| 日本老熟俱乐部h0930| 7777精品久久久大香线蕉| 看黄网站在线观看| 91影院在线免费观看视频| 国产精品99一区二区三区| 亚洲精品国产综合久久| 日本中文在线| 国产噜噜噜噜噜久久久久久久久 | 国产精品1024久久| 欧美一区二区三区爽爽爽| 91精品国产全国免费观看| 免费黄色网页在线观看| 成人国产亚洲精品a区天堂华泰| 国产高清一区二区| 一级片免费在线观看视频| 一区二区三区欧美日| 性欧美videos另类hd| 欧美黑人性猛交| 美女av一区| 97在线免费公开视频| 欧美国产精品久久| 亚洲自拍偷拍另类| 欧美高清一级大片| 色88888久久久久久影院| 久久久久久久久久久免费视频| 欧美国产精品一区二区| 国产乱色精品成人免费视频 | 成人女同在线观看| 久久手机视频| 日韩av中文字幕一区二区 | 亚洲va欧美va天堂v国产综合| 手机av免费在线观看| 国产91色在线|免| 婷婷亚洲图片| 五月天丁香社区| 一本到一区二区三区| 日本在线视频观看| 国产精品xxxx| 老色鬼久久亚洲一区二区| 欧美性x x x| 亚洲国产精品一区二区三区| julia一区二区三区中文字幕| 欧美xxxx吸乳| 26uuu另类欧美| 国产精品久久久久久无人区| 午夜精品美女自拍福到在线| av中文字幕一区二区| 日批免费观看视频| 欧美这里有精品| 黑人精品视频| 亚洲精品不卡| 成人av在线看| 99热这里精品| 国产成人精品在线观看| 国模 一区 二区 三区|