Как заблокировать вызов в Android Nougat, Oreo и выше программно? - PullRequest
0 голосов
/ 29 августа 2018

Этот код работает нормально до Android 6 ( Зефир ):

TelephonyManager tm = (TelephonyManager) context
        .getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
Object telephonyService = m.invoke(tm); 
c = Class.forName(telephonyService.getClass().getName()); 
m = c.getDeclaredMethod("endCall"); 
m.setAccessible(true); 
m.invoke(telephonyService);

После прочтения документации

Я позвонил endCall(context, number) до сих пор, Невозможно заблокировать вызов. Нужно рабочее решение в Android Nougat, Oreo, Pie и выше.

Обновление

Я включил следующий код из официальной документации Nougat, но, тем не менее, номер не был добавлен в черный список.

Cursor c = mContext.getContentResolver().query(BlockedNumberContract.BlockedNumbers.CONTENT_URI,
                    new String[]{BlockedNumberContract.BlockedNumbers.COLUMN_ID,
                            BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
                            BlockedNumberContract.BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);

1 Ответ

0 голосов
/ 16 декабря 2018

Android 9 не может использовать интерфейсы без SDK

Android 9 вводит новые ограничения на использование не SDK интерфейсы, напрямую, через отражение или через JNI. Эти ограничения применяются всякий раз, когда приложение ссылается на не SDK интерфейс или пытается получить его дескриптор, используя отражение или JNI.

И похоже, что вы не можете читать или писать на BlockedNumberContract, если это не системное приложение, не программа для набора номера по умолчанию или приложение для смс по умолчанию

Права доступа

Только система, приложение SMS по умолчанию и телефон по умолчанию приложение (см. TelecomManager.getDefaultDialerPackage ()) и приложения-операторы (См. CarrierService) можете читать и писать в заблокированный номер поставщик. Однако, canCurrentUserBlockNumbers (Context) может быть доступен любым приложением.

...