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 {
@Overridepublic 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); } }
用於擷取未讀簡訊未接電話數目