Telefonia to otwarty kanał komunikacji – każdy może zadzwonić lub wysłać SMS-a pod dowolny numer w dowolnym momencie. Użytkownicy Androida potrzebują więc możliwości łatwego blokowania niechcianych połączeń i SMS-ów.
Przed wersją 7.0 użytkownicy Androida musieli polegać na pobranych aplikacjach, aby ograniczać połączenia i SMS-y z niechcianych numerów telefonów. Wiele z tych aplikacji nie działa jako są oczekiwane lub niezadowalające z powodu braku odpowiednich interfejsów API. do blokowania połączeń i wiadomości.
Niektórzy producenci od razu wysyłają własne rozwiązania blokujące, Jeśli użytkownik zmieni urządzenie, może całkowicie utracić listę zablokowanych z powodu braku i interoperacyjności. Nawet jeśli użytkownicy korzystają z aplikacji do wybierania numerów, klienty komunikacyjne, które oferują takie funkcje, prawdopodobnie będą musieli Wykonaj działanie blokujące w każdej aplikacji, by blokada zadziałała w obu tych aplikacjach. dzwonienie i pisanie SMS-ów.
Funkcje
W Androidzie 7.0 wprowadziliśmy materiały BlockedNumberProvider
usługodawcy, który przechowuje listę numerów telefonów podanych przez użytkownika, nie powinien
kontaktować się z nimi za pomocą połączeń telefonicznych (połączenia telefonicznego, SMS-ów, MMS-ów).
będzie uwzględniać numery z listy zablokowanych, ograniczając
SMS-ów z tych numerów. Android 7.0 wyświetla listę zablokowanych numerów oraz
umożliwia dodawanie i usuwanie numerów.
Funkcja blokowania numerów włącza też system i odpowiednie aplikacje na z platformą do współpracy, aby chronić użytkowników i upraszczać z myślą o użytkownikach. domyślny telefon, domyślny klient do obsługi wiadomości, aplikacja z uprawnieniami UICC, i aplikacje o tym samym podpisie co system mogą bezpośrednio odczytywać i zapisywać na liście zablokowanych. Zablokowane numery są przechowywane w systemie, niezależnie od tego, z jakich aplikacji do wybierania numerów lub wiadomości korzysta użytkownik, numer pozostaje bez zmian, Użytkownik został zablokowany. Listę zablokowanych numerów można przywrócić na każdym nowym urządzeniu, bez względu na producenta.
- Użytkownik ma zagwarantowaną gotowość do korzystania z funkcji blokowania. i nie stracą listy zablokowanych po zmianie aplikacji lub zakupie nowego telefonu. Wszystkie odpowiednie aplikacje w systemie mogą udostępniać tę samą listę, aby zapewnić użytkownikowi i ułatwić korzystanie z internetu.
- Deweloperzy aplikacji nie muszą opracowywać własnych sposobów zarządzania listą blokowania ani połączeń i wiadomości. Mogą po prostu użyć i funkcji udostępnianej przez platformę.
- Aplikacje telefonu i komunikatory wybrane przez użytkownika jako domyślne mogą
do odczytu i zapisu w usłudze. Inne aplikacje mogą uruchomić zarządzanie listą zablokowanych
interfejsu za pomocą funkcji
createManageBlockedNumbersIntent()
- OEM może stosować funkcję blokowania za pomocą funkcji udostępnianej przez platformę gotowe usługi. OEM może mieć pewność, że gdy użytkownik przejdzie od innego producenta OEM na urządzeniach, na których proces rejestracji jest wygodniejszy, ponieważ lista blokad również mogą zostać przeniesione.
- Jeśli operator ma własną aplikację do obsługi telefonu lub komunikatora, może ponownie korzystać z platformy. funkcja umożliwiająca użytkownikowi tworzenie listy blokad. Mogą mieć pewność, że lista zablokowanych użytkowników będzie dostępna na nowym urządzeniu. Wszystkie aplikacje z uprawnieniami operatora mogą odczytywać listę blokad, więc jeśli chce zaoferować użytkownikom jeszcze skuteczniejsze blokowanie, na podstawie listy blokad, jest to teraz możliwe dzięki tej funkcji.
Przepływ danych
Przykłady i źródło
Oto przykłady połączeń z nową funkcją blokowania numerów:
Uruchom Menedżera zablokowanych numerów z aplikacji
Context.startActivity(telecomManager.createManageBlockedNumbersIntent(), null);
Zapytanie o zablokowane numery
Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER, BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
Umieść zablokowany numer
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
Usuń zablokowany numer
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null);
Implementacja
Są to zadania ogólne, które należy wykonać, aby umieścić funkcję do użycia:
- OEM wdraża na swoich urządzeniach funkcje ograniczania połączeń lub wiadomości za pomocą:
BlockedNumberProvider
- Jeśli operator ma aplikację Telefon lub komunikator, wdróż połączenia/wiadomości
funkcje ograniczeń przy użyciu funkcji
BlockedNumberProvider
- Dostawcy zewnętrznych usług telefonicznych i komunikatorów
BlockedNumberProvider
ze względu na funkcje blokowania
Zalecenia dla producentów OEM
jeśli urządzenie nigdy nie było wysyłane w ramach dodatkowego połączenia lub wiadomości. funkcji ograniczeń, skorzystaj z funkcji blokowania liczb dostępnej na platformie Android Open Source Project (AOSP) na wszystkich takich urządzeniach. Zalecamy, aby rozsądny wpis obsługiwane są punkty do zablokowania, np. zablokowanie numeru bezpośrednio w trakcie połączenia lub w wątku wiadomości.
Jeśli urządzenie było wcześniej wyposażone w funkcje ograniczeń połączeń/wiadomości,
Dostosować funkcje tak, aby zablokowane numery telefonów o ściśle dopasowanych parametrach
są przechowywane w BlockedNumberProvider,
, a zachowanie
dostawcy spełniają wymagania dotyczące tej funkcji opisane
dokument definicji zgodności z Androidem (Android Compatibility Definition Document, CDD).
Wszelkie inne zaawansowane funkcje można wdrożyć za pomocą niestandardowych dostawców i niestandardowego interfejsu użytkownika / środków kontroli, o ile są spełnione wymagania CDD dotyczące Blokowanie ściśle dopasowanych numerów telefonów. Zalecamy, aby te pozostałe funkcje być oznaczone jako funkcje zaawansowane, aby uniknąć niejasności funkcji blokowania numerów.
Interfejsy API
Używane są następujące interfejsy API:
TelecomManager API
Intent createManageBlockedNumbersIntent()
Carrier Config
KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
- Więcej informacji:
BlockedNumberContract
- Interfejsy API udostępnione przez
BlockedNumberContract
boolean isBlocked(Context context, String phoneNumber)
int unblock(Context context, String phoneNumber)
boolean canCurrentUserBlockNumbers(Context context)
- Interfejsy API udostępnione przez
Interfejs użytkownika
Interfejs BlockedNumbersActivity.java udostępniany w AOSP może służyć do: Twórcy implementacji na urządzeniach mogą też wdrażać własną wersję interfejsu użytkownika, spełnia powiązane wymagania CDD.
Do tworzenia i przywracania kopii zapasowych może być potrzebna aplikacja na komputer partnera
w celu wdrożenia przywrócenia listy blokad za pomocą funkcji
BlockedNumberProvider
Zobacz ilustracje poniżej dla zablokowanych
interfejsu liczbowego w AOSP.
Weryfikacja
Aby mieć pewność, że ich wersja funkcji działa prawidłowo, implementujący mogą przeprowadzić te testy CTS:
android.provider.cts.BlockedNumberContractTest com.android.cts.numberblocking.hostside.NumberBlockingTest android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected android.telephony.cts.SmsManagerTest#testSmsBlocking
Elementem BlockedNumberProvider
można manipulować za pomocą poleceń adb
po uruchomieniu $ adb root
. Na przykład:
adb root
adb shell content query --uri content://com.android.blockednumber/blocked
adb shell content insert --uri / content://com.android.blockednumber/blocked --bind / original_number:s:'6501002000'
adb shell content delete --uri / content://com.android.blockednumber/blocked/1