2011-05-06 40 views

回答

8

1.創建觀察員:

class CustomContentObserver extends ContentObserver { 

     public CustomContentObserver(Handler handler) { 
      super(handler); 

     } 

     @Override public boolean deliverSelfNotifications() { 
      return false; 
     } 

     public void logCallLog() { 
      long dialed; 
      String columns[]=new String[] { 
        CallLog.Calls._ID, 
        CallLog.Calls.NUMBER, 
        CallLog.Calls.DATE, 
        CallLog.Calls.DURATION, 
        CallLog.Calls.TYPE}; 
      Cursor c; 
      c = getContentResolver().query(Uri.parse("content://call_log/calls"), 
        columns, null, null, "Calls._ID DESC"); //last record first 
      while (c.moveToNext()) { 
       dialed=c.getLong(c.getColumnIndex(CallLog.Calls.DATE));     
       Log.i("CallLog","type: " + c.getString(4) + "Call to number: "+number+", registered at: "+new Date(dialed).toString()); 
      } 
     } 

     public void onChange(boolean selfChange) { 
      super.onChange(selfChange); 
      Log.d("PhoneService", "StringsContentObserver.onChange(" + selfChange + ")"); 
      logCallLog(); 
     } 

} 

2.註冊觀察員:

Uri mediaUri = android.provider.CallLog.Calls.CONTENT_URI; 
     Log.d("PhoneService", "The Encoded path of the media Uri is " 
       + mediaUri.getEncodedPath()); 
     CustomContentObserver custObser = new CustomContentObserver(handler); 
     imageContentRsr.registerContentObserver(mediaUri, false, custObser); 

編輯: 作爲傑利貝恩(4.1),你現在需要兩個許可

<uses-permission android:name="android.permission.READ_CALL_LOG" /> 

爲此工作,而不是拋出權限拒絕異常

+0

什麼類型的對象是imagecontentRsr? – 2012-10-26 22:38:58

+0

嘗試getContentResolver() – alezhka 2012-10-29 09:04:20

+1

謝謝我已經嘗試使用getContentResolver()並且可以工作,但在ContentObserver類之外。在這個類下它說getContentReseolver是未定義的。 – 2012-10-29 13:20:14