Android實(shí)現(xiàn)獲取未接來(lái)電和未讀短信數(shù)量的方法
本文實(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)參考借鑒作用。
- android短信攔截的實(shí)現(xiàn)代碼
- Android短信接收監(jiān)聽(tīng)、自動(dòng)回復(fù)短信操作例子
- Android發(fā)送短信功能代碼
- 詳解Android 藍(lán)牙通信方式總結(jié)
- Android實(shí)現(xiàn)發(fā)送短信功能實(shí)例詳解
- android中可以通過(guò)兩種方式調(diào)用接口發(fā)送短信
- Android獲取和讀取短信驗(yàn)證碼的實(shí)現(xiàn)方法
- Android實(shí)現(xiàn)短信驗(yàn)證碼自動(dòng)填寫(xiě)功能
- Android實(shí)現(xiàn)自動(dòng)提取短信驗(yàn)證碼功能
- android讀取短信示例分享
- Android編程實(shí)現(xiàn)攔截短信并屏蔽系統(tǒng)Notification的方法
- Android編程實(shí)現(xiàn)定時(shí)發(fā)短信功能示例
相關(guān)文章
讓Android中RadioGroup不顯示在輸入法上面的辦法
在Android開(kāi)發(fā)中,發(fā)現(xiàn)一個(gè)問(wèn)題,打開(kāi)輸入法導(dǎo)致下面的radioGroup的位置發(fā)生了變化,被頂?shù)搅溯斎敕ǖ纳厦?,那么該如何解決呢?下面來(lái)看看。2016-08-08
android中Handle類(lèi)的用法實(shí)例分析
這篇文章主要介紹了android中Handle類(lèi)的用法,以實(shí)例形式較為詳細(xì)的分析了基于Handle類(lèi)線(xiàn)程執(zhí)行的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
利用Android實(shí)現(xiàn)一種點(diǎn)贊動(dòng)畫(huà)效果的全過(guò)程
最近做項(xiàng)目需要實(shí)現(xiàn)點(diǎn)贊動(dòng)畫(huà),下面這篇文章主要給大家介紹了關(guān)于利用Android實(shí)現(xiàn)一種點(diǎn)贊動(dòng)畫(huà)效果的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
Android多邊形區(qū)域掃描線(xiàn)種子填充算法的示例
這篇文章主要介紹了Android多邊形區(qū)域掃描線(xiàn)種子填充算法的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Android videoview搶占焦點(diǎn)的處理方法
這篇文章主要為大家詳細(xì)介紹了Android videoview搶占焦點(diǎn)的處理方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Android如何禁止向EditText控件中輸入內(nèi)容詳解
EditText是接受用戶(hù)輸入信息的最重要控件。下面這篇文章主要給大家介紹了關(guān)于Android如何禁止向EditText控件中輸入內(nèi)容的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09
android自定義AlertDialog對(duì)話(huà)框
這篇文章主要為大家詳細(xì)介紹了android自定義AlertDialog的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android AIDL實(shí)現(xiàn)進(jìn)程間通信探索
這篇文章主要為大家詳細(xì)介紹了Android AIDL實(shí)現(xiàn)進(jìn)程間通信的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
ActivityManagerService廣播注冊(cè)與發(fā)送示例解析
這篇文章主要為大家介紹了ActivityManagerService廣播注冊(cè)與發(fā)送示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

