2013-12-20 162 views
1

我正在使用耳機按鈕控制器,並且我想添加一個假/無效呼叫來呼叫記錄,以防止手機在撥打耳機按鈕兩次時撥打最後一個呼叫(雙擊)在HTC手機。 我嘗試這樣做:向Android通話記錄添加假通話

ContentValues cv = new ContentValues(); 
cv.put(CallLog.Calls.NUMBER, number); 
cv.put(CallLog.Calls.DATE, System.currentTimeMillis()); 
cv.put(CallLog.Calls.DURATION, 0); 
cv.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE); 
cv.put(CallLog.Calls.NEW, 0); 
cv.put(CallLog.Calls.CACHED_NAME, ""); 
cv.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0); 
cv.put(CallLog.Calls.CACHED_NUMBER_LABEL, ""); 
this.getContentResolver().insert(CallLog.Calls.CONTENT_URI, cv); 

而且程序崩潰(應用程序已停止錯誤)。 我已經設置清單文件權限:

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

問題出在哪裏?

+0

我會考慮允許應用程序寫入通話記錄是一個巨大的安全漏洞,你不能做到這一點。只是不要按耳機按鈕兩次。 –

+0

@Lotharyx我正在開發一個耳機按鈕控制器,我想通過雙擊耳機按鈕來播放下一個音軌,而不是呼叫我呼叫過的最後一個人。 – Mehrdad

+0

請參閱[此鏈接](http://stackoverflow.com/questions/20718617/how-to-detect-headset-button-double-click-in-htc-phones-with-broadcast-receiver)解決方案的雙點擊問題。 – Mehrdad

回答

1
/** 
* insert new call log 
*/ 
public static void insertNumber(Activity activity) { 
    ContentValues values = new ContentValues(); 
    values.put(CallLog.Calls.CACHED_NUMBER_TYPE, 0); 
    values.put(CallLog.Calls.TYPE, CallLog.Calls.INCOMING_TYPE); 
    values.put(CallLog.Calls.DATE, System.currentTimeMillis()); 
    values.put(CallLog.Calls.DURATION, 50); 
    values.put(CallLog.Calls.NUMBER, "1234567"); 
    activity.getContentResolver().insert(CallLog.Calls.CONTENT_URI, 
      values); 
} 


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

請解釋你的代碼 – Gwenc37

1

,除非你手機Root權限和adb push您的應用程序到系統分區(/system/priv-app