Я искал множество решений для доступа к журналам вызовов, но большинство из них устарели, и мне действительно нужно решение для доступа к журналу вызовов и получения пропущенных вызовов для моего выпускного проекта. Большинство кодов должны были иметь разрешение на чтение и запись вызова. войти, но это тоже не сработало
Вот код, который использует разрешение, и я добавил его в манифест.
Uri allCalls = Uri.parse("content://call_log/calls");
Cursor c = managedQuery(allCalls, null, null, null, null);
String num= c.getString(c.getColumnIndex(CallLog.Calls.NUMBER));// for number
String name= c.getString(c.getColumnIndex(CallLog.Calls.CACHED_NAME));// for name
String duration = c.getString(c.getColumnIndex(CallLog.Calls.DURATION));// for duration
int type = Integer.parseInt(c.getString(c.getColumnIndex(CallLog.Calls.TYPE)));// for call type, Incoming or out going.
Toast.makeText(MainActivity.this, num, Toast.LENGTH_SHORT).show();
Ошибка:
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.CallLogProvider from ProcessRecord{6cd48b2 23881:com.example.d_actions/u0a108} (pid=23881, uid=10108) requires android.permission.READ_CALL_LOG or android.permission.WRITE_CALL_LOG
Изменить: managedQuery(allCalls, null, null, null, null);
устарело.