国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)獲取未接來(lái)電和未讀短信數(shù)量的方法

2020-04-11 11:45:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例展示了Android實(shí)現(xiàn)獲取未接來(lái)電和未讀短信數(shù)量的方法,在Android程序開(kāi)發(fā)中非常常見(jiàn),是非常實(shí)用的功能,現(xiàn)分享給大家供大家參考。具體如下:

一、未讀短信
 
首先注冊(cè)O(shè)bserver,當(dāng)有新短信或彩信來(lái)的時(shí)候會(huì)調(diào)用 onChange方法,我們可以在onChange方法中去獲取未讀短信和彩信,然后做一些UI上的處理!

具體功能代碼如下:

private ContentObserver newMmsContentObserver = new ContentObserver(new Handler()) {   public void onChange(boolean selfChange) {     int mNewSmsCount = getNewSmsCount() + getNewMmsCount();   } }; private void registerObserver() {   unregisterObserver();   getContentResolver().registerContentObserver(Uri.parse("content://sms"), true,       newMmsContentObserver);   getContentResolver().registerContentObserver(MmsSms.CONTENT_URI, true,       newMmsContentObserver); } private synchronized void unregisterObserver() {   try {     if (newMmsContentObserver != null) {       getContentResolver().unregisterContentObserver(newMmsContentObserver);     }     if (newMmsContentObserver != null) {       getContentResolver().unregisterContentObserver(newMmsContentObserver);     }   } catch (Exception e) {     Log.e(TAG, "unregisterObserver fail");   } } 

得到未讀短信數(shù)量:

private int getNewSmsCount() {   int result = 0;   Cursor csr = getContentResolver().query(Uri.parse("content://sms"), null,       "type = 1 and read = 0", null, null);   if (csr != null) {     result = csr.getCount();     csr.close();   }   return result; } 

獲取未讀彩信數(shù)量:

private int getNewMmsCount() {   int result = 0;   Cursor csr = getContentResolver().query(Uri.parse("content://mms/inbox"),       null, "read = 0", null, null);   if (csr != null) {     result = csr.getCount();     csr.close();   }   return result; } 

二、未接來(lái)電

未接來(lái)電不能用 Observer監(jiān)聽(tīng),不過(guò)當(dāng)有新的未接來(lái)電時(shí),系統(tǒng)會(huì)發(fā)送一個(gè)廣播com.android.phone.NotificationMgr.MissedCall_intent(鎖屏上顯示的未接來(lái)電數(shù)量就是通知監(jiān)聽(tīng)這個(gè)廣播實(shí)現(xiàn)的)

具體功能代碼如下:

final IntentFilter filter = new IntentFilter(); filter.addAction("com.android.phone.NotificationMgr.MissedCall_intent"); final Application application = getApplication(); application.registerReceiver(new BroadcastReceiver() {   @Override   public void onReceive(Context context, Intent intent) {     String action = intent.getAction();     if (action != null && "com.android.phone.NotificationMgr.MissedCall_intent".equals(action)) {       int mMissCallCount = intent.getExtras().getInt("MissedCallNumber");     }   } }, filter); 

廣播只是當(dāng)有新的未接來(lái)電時(shí)才會(huì)發(fā)送,但是如果有舊的未接來(lái)電沒(méi)有讀取時(shí),上面的廣播就得不到數(shù)據(jù)了,那就必須得從數(shù)據(jù)庫(kù)中查找了。

功能代碼如下:

private int readMissCall() {   int result = 0;   Cursor cursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, new String[] {       Calls.TYPE     }, " type=? and new=?", new String[] {         Calls.MISSED_TYPE + "", "1"     }, "date desc");    if (cursor != null) {     result = cursor.getCount();     cursor.close();   }   return result; } 

相信本文所述實(shí)例對(duì)于大家的Android程序開(kāi)發(fā)能起到一點(diǎn)參考借鑒作用。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 抚顺县| 土默特左旗| 定结县| 都匀市| 体育| 上高县| 来凤县| 岳普湖县| 吴桥县| 盐亭县| 卓资县| 桐城市| 梓潼县| 封丘县| 民县| 饶平县| 西安市| 涪陵区| 托克逊县| 瓮安县| 青阳县| 高邑县| 子洲县| 常德市| 交口县| 西吉县| 新源县| 遂平县| 旬邑县| 巨鹿县| 河间市| 北票市| 平潭县| 桐城市| 临猗县| 错那县| 辉南县| 阿巴嘎旗| 北流市| 仲巴县| 墨江|