a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android實現獲取未接來電和未讀短信數量的方法

2020-04-11 11:45:10
字體:
來源:轉載
供稿:網友

本文實例展示了Android實現獲取未接來電和未讀短信數量的方法,在Android程序開發中非常常見,是非常實用的功能,現分享給大家供大家參考。具體如下:

一、未讀短信
 
首先注冊Observer,當有新短信或彩信來的時候會調用 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");   } } 

得到未讀短信數量:

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

獲取未讀彩信數量:

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

二、未接來電

未接來電不能用 Observer監聽,不過當有新的未接來電時,系統會發送一個廣播com.android.phone.NotificationMgr.MissedCall_intent(鎖屏上顯示的未接來電數量就是通知監聽這個廣播實現的)

具體功能代碼如下:

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

廣播只是當有新的未接來電時才會發送,但是如果有舊的未接來電沒有讀取時,上面的廣播就得不到數據了,那就必須得從數據庫中查找了。

功能代碼如下:

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

相信本文所述實例對于大家的Android程序開發能起到一點參考借鑒作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性色av网 | 久久久国产精品入口麻豆 | 成人欧美一区二区三区 | 狠狠久| 欧美a在线看 | 国产精品久久久久久 | 一级特黄色大片 | 日本免费成人 | 成人免费视频网站在线观看 | 国产精品福利久久 | 插插插干干干 | 欧美一区二区三区精品 | 国产午夜精品美女视频明星a级 | 搜索黄色毛片 | h在线看 | 日韩成人免费视频 | 福利电影在线 | 中文字幕天天操 | 在线播放国产视频 | 成人精品视频 | 久久福利 | a视频在线播放 | 日韩欧美三区 | 中文字幕在线观看 | 中文字幕av亚洲精品一部二部 | a级在线观看免费 | 日韩精品中文字幕在线播放 | 国产精品久久久久久一区二区三区 | 日韩久草 | 精品在线免费观看视频 | 国产最新精品视频 | 国产精品久久久久久久久久东京 | 亚洲美女视频 | 日韩精品一区二区三区免费观看视频 | 精品免费在线视频 | 成人在线免费 | 精品国产一区二区三区在线观看 | 日韩电影一区二区三区 | 欧美日韩一级二级三级 | 中文字幕 欧美 日韩 | 欧美在线视频播放 |