Android實現(xiàn)獲取未接來電和未讀短信數(shù)量的方法
本文實例展示了Android實現(xiàn)獲取未接來電和未讀短信數(shù)量的方法,在Android程序開發(fā)中非常常見,是非常實用的功能,現(xiàn)分享給大家供大家參考。具體如下:
一、未讀短信
首先注冊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");
}
}
得到未讀短信數(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;
}
二、未接來電
未接來電不能用 Observer監(jiān)聽,不過當有新的未接來電時,系統(tǒng)會發(fā)送一個廣播com.android.phone.NotificationMgr.MissedCall_intent(鎖屏上顯示的未接來電數(shù)量就是通知監(jiān)聽這個廣播實現(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);
廣播只是當有新的未接來電時才會發(fā)送,但是如果有舊的未接來電沒有讀取時,上面的廣播就得不到數(shù)據(jù)了,那就必須得從數(shù)據(jù)庫中查找了。
功能代碼如下:
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程序開發(fā)能起到一點參考借鑒作用。
- android短信攔截的實現(xiàn)代碼
- Android短信接收監(jiān)聽、自動回復短信操作例子
- Android發(fā)送短信功能代碼
- 詳解Android 藍牙通信方式總結
- Android實現(xiàn)發(fā)送短信功能實例詳解
- android中可以通過兩種方式調用接口發(fā)送短信
- Android獲取和讀取短信驗證碼的實現(xiàn)方法
- Android實現(xiàn)短信驗證碼自動填寫功能
- Android實現(xiàn)自動提取短信驗證碼功能
- android讀取短信示例分享
- Android編程實現(xiàn)攔截短信并屏蔽系統(tǒng)Notification的方法
- Android編程實現(xiàn)定時發(fā)短信功能示例
相關文章
Android使用Intent的Action和Data屬性實現(xiàn)點擊按鈕跳轉到撥打電話和發(fā)送短信界面
這篇文章主要介紹了Android中使用Intent的Action和Data屬性實現(xiàn)點擊按鈕跳轉到撥打電話和發(fā)送短信,需要的朋友可以參考下2020-01-01
Android開發(fā)實現(xiàn)Fragment監(jiān)聽返回鍵事件功能的方法
這篇文章主要介紹了Android開發(fā)實現(xiàn)Fragment監(jiān)聽返回鍵事件功能的方法,結合實例形式分析了Android使用Fragment監(jiān)聽并屏蔽返回鍵按鈕的實現(xiàn)方法與相關操作技巧,需要的朋友可以參考下2017-11-11
Android?RecyclerView使用ListAdapter高效刷新數(shù)據(jù)的操作方法
這篇文章主要介紹了Android?RecyclerView使用ListAdapter高效刷新數(shù)據(jù),本次也是介紹了用另外一種方法來實現(xiàn)RecyclerView高效刷新數(shù)據(jù)的功能,需要的朋友可以參考下2022-10-10
Android編程實現(xiàn)仿優(yōu)酷圓盤旋轉菜單效果的方法詳解【附demo源碼下載】
這篇文章主要介紹了Android編程實現(xiàn)仿優(yōu)酷圓盤旋轉菜單效果的方法,涉及Android界面布局及事件響應相關操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-08-08
Android中在GridView網(wǎng)格視圖上實現(xiàn)item拖拽交換的方法
這篇文章主要介紹了Android中在GridView上實現(xiàn)item拖拽交換效果的方法,比起ListView的列表條目交換稍顯復雜,文中先介紹了關于創(chuàng)建GridView的一些基礎知識,需要的朋友可以參考下2016-04-04

