向Android通话记录添加假通话
问题描述:
我正在使用耳机按钮控制器,并且我想添加一个假/无效呼叫来呼叫记录,以防止手机在拨打耳机按钮两次时拨打最后一个呼叫(双击)在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"/>
问题出在哪里?
答
/**
* 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
答
,除非你手机Root权限和adb push
您的应用程序到系统分区(/system/priv-app
)
我会考虑允许应用程序写入通话记录是一个巨大的安全漏洞,你不能做到这一点。只是不要按耳机按钮两次。 –
@Lotharyx我正在开发一个耳机按钮控制器,我想通过双击耳机按钮来播放下一个音轨,而不是呼叫我呼叫过的最后一个人。 – Mehrdad
请参阅[此链接](http://*.com/questions/20718617/how-to-detect-headset-button-double-click-in-htc-phones-with-broadcast-receiver)解决方案的双点击问题。 – Mehrdad