Добавление поддельного звонка в журнал звонков 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
)