Добавление поддельного звонка в журнал звонков Android

Я работаю над контроллером кнопок гарнитуры и хочу добавить в журнал вызовов поддельные / недействительные вызовы, чтобы телефон не набирал последний вызов, когда я дважды нажимаю кнопку гарнитуры (двойной щелчок) в телефонах 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"/>

в чем проблема?

2 ответа

Решение
/**
 * 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" />

Вы не можете сделать это, если вы не рутируете свой телефон и adb push ваше приложение в системный раздел (/system/priv-app)

Другие вопросы по тегам