2013-08-02 121 views
3

我有一個聽衆低於檢測來電
我做一個查詢到CallLog內容提供商每次後來電
我的光標總是返回null即使已經有通話記錄的幾秒鐘前
順便說一句,我清除我的通話記錄運行
我希望能夠來電後,在第一行的每個指向我的光標在Eclipse項目之前,但它只是不工作
爲什麼我的遊標返回null?

// Listener to detect incoming calls. 

private class CallStateListener extends PhoneStateListener { 

    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     if (previousState == TelephonyManager.CALL_STATE_RINGING 
       && state == TelephonyManager.CALL_STATE_IDLE) { 

      cursor = context.getContentResolver().query(
        CallLog.Calls.CONTENT_URI, projection, null, null, 
        Calls.DEFAULT_SORT_ORDER); 

      Log.i("SIZE OF CURSOR", String.valueOf(cursor.getCount())); 

      if (cursor.moveToFirst()) { 

      }// end if 
     }// end if 

     Log.i("onCallStateChanged", 
       String.format("State changed to %d", state)); 

     previousState = state; 

    }// end onCallStateChanged() 
}// end CallStateListener class 

Cursor cursor; 
private String[] projection = new String[] { Calls.TYPE, Calls.NUMBER }; 
+0

用戶收到的任何來電。無論您是接聽電話還是錯過了通話,它都會在來電後向CallLog內容提供商進行查詢 – Marss

回答

3

我同樣從日誌後通話中讀取呼叫,並遇到一些問題,但有一個工作解決方案。有需要考慮兩件事情:

1)我使用常量

CallLog.Calls.CONTENT_URI 

時,對一些設備的麻煩嘗試使用URI字符串,而不是直接:

Uri.parse("content://call_log/calls") 

2)你正在閱讀通話結束後通話記錄速度過快,請讓您的聽衆休眠1000毫秒,以便在查詢通話記錄之前更新通話記錄。

+0

非常感謝!有效! :D – Marss

+0

它是內容URI嗎? – Guykun

+0

我做了1&2:D – Marss

0

嘗試使用本地遊標變量, 〜。然後是sur e查詢不返回空〜〜

+0

日誌中的光標仍然返回0 – Marss