if (mIntentReceiver == null) {
mIntentReceiver = new MissedCallIntentReceiver();
final IntentFilter myFilter = new IntentFilter();
myFilter.addAction("com.android.phone.NotificationMgr.MissedCall_intent");
getApplicationContext().registerReceiver(mIntentReceiver, myFilter);
}
getApplicationContext().getContentResolver().registerContentObserver(Uri.parse("content://mms-sms/"), true,
new newMmsContentObserver(getApplicationContext(), myHandler));
private class MissedCallIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
missedCallCount=intent.getIntExtra(MISSECALL_EXTRA, 0);//未接电话数目
}
}
private void findNewSmsCount(Context ctx){
Cursor csr = null;
try {
csr = getApplicationContext().getContentResolver().query(Uri.parse("content://sms"), null,"type = 1 and read = 0", null, null);
} catch (Exception e) {
e.printStackTrace();
} finally {
csr.close();
}
newSmsCount=csr.getCount(); //未读短信数目
Log.v(TAG,"newSmsCount="+newSmsCount);
}
private void findNewMmsCount(Context ctx){
Cursor csr = null;
try {
csr = getApplicationContext().getContentResolver().query(Uri.parse("content://mms/inbox"), null,
"read = 0", null, null);
} catch (Exception e) {
e.printStackTrace();
} finally {
csr.close();
}
newMmsCount=csr.getCount();//未读彩信数目
}
//监控短信,彩信数目变化
public class newMmsContentObserver extends ContentObserver{
private Context ctx;
public newMmsContentObserver(Context context, Handler handler) {
super(handler);
ctx = context;
}
@Override
public void onChange(boolean selfChange){
Log.v(TAG,"newMmsContentObserver onChange:");
newMmsCount=0;
newSmsCount=0;
findNewMmsCount(ctx);
findNewSmsCount(ctx);
}
}
用于获取未读短信未接电话数目