Telefonnummern blockieren

Da Telefonie ein so offener Kommunikationskanal ist, kann jeder anrufen oder jederzeit SMS an eine beliebige Nummer senden können – Android-Nutzer benötigen die Möglichkeit, unerwünschte Anrufe und SMS.

Vor Android 7.0 mussten Android-Nutzer Anrufe und SMS von lästigen Telefonnummern. Viele dieser Apps funktionieren auch nicht nicht ideal oder nicht ideal sind, weil es keine geeigneten APIs gibt. zum Blockieren von Anrufen und Nachrichten.

Einige Hersteller liefern möglicherweise ihre eigenen Blockierungslösungen aus der Box. Wenn Nutzer jedoch das Gerät wechseln, geht die Blockierungsliste aufgrund mangelnder Interoperabilität möglicherweise vollständig verloren. Und selbst wenn Nutzer Anruf-Apps verwenden und die diese Funktionen anbieten, die Blockierung in jeder App auszuführen, damit die Blockierung für beide für Anrufe und SMS.

Funktionen

Mit der Android-Version 7.0 wird ein BlockedNumberProvider-Inhalt eingeführt. Anbieter, der eine Liste der vom Nutzer angegebenen Telefonnummern speichert, sollte nicht können sie per Telefon, SMS oder MMS kontaktieren. Die berücksichtigt das System die Nummern auf der Liste blockierter Anrufe und aus diesen Nummern zu senden. Unter Android 7.0 wird eine Liste der blockierten Nummern können Nutzer Nummern hinzufügen und entfernen.

Durch die Blockierfunktion können das System und die entsprechenden Apps Plattform zusammenarbeiten, um Nutzer besser zu schützen Nutzererfahrung. Standard-Dialer, Standard-Messaging-Client, UICC-privilegierte App und Apps mit derselben Signatur wie das System in die Sperrliste schreiben. Da die blockierten Nummern im System gespeichert werden, Egal, welche Telefon- oder Messaging-Apps der Nutzer verwendet, die Nummern bleiben blockiert. Die Liste der blockierten Nummern kann auf jedem neuen Gerät wiederhergestellt werden, unabhängig vom Hersteller.

  • Nutzer haben garantiert eine Standard-Blockierfunktion. Ihre Sperrliste geht nicht verloren, wenn sie die App wechseln oder sich ein neues Smartphone zulegen. Alle können relevante Apps im System dieselbe Liste verwenden, um dem Nutzer die beste Nutzererfahrung bieten.
  • App-Entwickler müssen keine eigene Methode entwickeln, um eine Sperrliste zu verwalten eingehende Anrufe und Nachrichten. Sie können einfach die der von der Plattform bereitgestellten Funktion.
  • Anruf-/Messenger-Apps, die vom Nutzer als Standard ausgewählt werden, können Daten vom und zum Anbieter lesen und schreiben. Andere Apps können die Verwaltung von Sperrlisten starten Benutzeroberfläche mithilfe von createManageBlockedNumbersIntent()
  • OEMs können die von der Plattform bereitgestellte Funktion verwenden, um eine Blockierfunktion direkt aus der Verpackung zu liefern. OEMs können sich darauf verlassen, dass Nutzer, die von einem anderen OEM wechseln, damit sie das Onboarding einfacher machen können, da die Sperrliste übertragen werden.
  • Wenn der Mobilfunkanbieter eine eigene Telefon- oder Messenger-App hat, kann er die Plattform wiederverwenden. eine Funktion, mit der Nutzer eine Sperrliste verwalten können. Ihre Kunden können sich darauf verlassen, dass die Sperrliste bei ihnen bleiben kann, auch wenn diese eine neue . Außerdem können alle vom Mobilfunkanbieter privilegierten Apps die Blockierungsliste lesen. Der Mobilfunkanbieter möchte dem Nutzer eine zusätzliche leistungsstärkere Blockierung zur Verfügung stellen. auf der Sperrliste basiert, ist das jetzt möglich.

Datenfluss

Blocknummern-Datenfluss

Abbildung 1: Datenfluss für Telefonnummern blockieren

Beispiele und Quelle

Hier einige Beispiele für Anrufe, bei denen die neue Funktion zum Blockieren von Nummern verwendet wird:

Blockierte Nummern-Manager über die App starten

Context.startActivity(telecomManager.createManageBlockedNumbersIntent(), null);

Blockierte Nummern abfragen

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

Blockierte Nummer eingeben

ContentValues values = new ContentValues();
values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);

Blockierte Nummer löschen

ContentValues values = new ContentValues();
values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
getContentResolver().delete(uri, null, null);

Implementierung

Dies sind die übergeordneten Aufgaben, die ausgeführt werden müssen, damit die Blockierung zu verwenden:

  • OEMs implementieren Funktionen zur Anruf-/Nachrichtenbeschränkung auf ihren Geräten mithilfe von BlockedNumberProvider
  • Wenn der Mobilfunkanbieter eine Telefon- oder Messenger-App hat, implementieren Sie einen Anruf oder eine Nachricht. Einschränkungsfunktionen mithilfe von BlockedNumberProvider
  • Drittanbieter von Telefon- und Messenger-Apps BlockedNumberProvider für ihre/seine Blockierfunktionen

Empfehlungen für OEMs

Wenn das Gerät zuvor noch nie mit einem weiteren Anruf oder einer weiteren Nachricht versendet wurde Einschränkungsfunktionen wie: Nutzen Sie die Funktion zum Blockieren von Nummern in der Android-Open-Source-Version Project (AOSP) auf allen derartigen Geräten. Es wird empfohlen, dass vernünftige Einstiegspunkte für die Blockierung unterstützt werden, z. B. die Blockierung einer Nummer direkt über das Anrufprotokoll oder in einem Nachrichten-Thread.

Wenn das Gerät zuvor mit Funktionen zur Einschränkung von Anrufen/Nachrichten versendet wurde, die Funktionen so anpassen, dass alle blockierten Telefonnummern mit exakter Übereinstimmung BlockedNumberProvider, gespeichert sind und dass das Verhalten die Anforderungen für diese Funktion erfüllen, die in der Android Compatibility Definition Document (CDD).

Alle anderen erweiterten Funktionen können über benutzerdefinierte Anbieter und benutzerdefinierte Benutzeroberflächen implementiert werden. / kontrollen, solange die CDD-Anforderungen in Bezug auf Telefonnummern, die genau passend sind, werden blockiert. Diese anderen Funktionen sollten Sie als „erweitert“ gekennzeichnet werden, um eine Verwechslung mit den grundlegenden eine Funktion zum Blockieren von Nummern.

APIs

Folgende APIs werden verwendet:

  • TelecomManager API
    • Intent createManageBlockedNumbersIntent()
  • Carrier Config
    • KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
  • Siehe BlockedNumberContract
    • Von BlockedNumberContract bereitgestellte APIs
    • boolean isBlocked(Context context, String phoneNumber)
    • int unblock(Context context, String phoneNumber)
    • boolean canCurrentUserBlockNumbers(Context context)

Benutzeroberfläche

Die in AOSP bereitgestellte Benutzeroberfläche „BlockingNumbersActivity.java“ kann als ist. Geräte-Implementierer können auch eine eigene Version der Benutzeroberfläche implementieren, sofern diese die damit verbundenen CDD-Anforderungen erfüllt.

Hinweis: Für die Sicherung und Wiederherstellung kann die PC-App des Partners erforderlich sein die Wiederherstellung der Sperrliste mithilfe BlockedNumberProvider Siehe Bilder unten für die blockierten Personen Zahlen-Interface, das in AOSP bereitgestellt wird.

Benutzeroberfläche zum Blockieren von Nummern

Abbildung 2: Benutzeroberfläche zum Blockieren von Telefonnummern

Zertifizierungsstufe

Mit den folgenden CTS-Tests können Implementierer prüfen, ob ihre Version der Funktion wie vorgesehen funktioniert:

android.provider.cts.BlockedNumberContractTest
com.android.cts.numberblocking.hostside.NumberBlockingTest
android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected
android.telephony.cts.SmsManagerTest#testSmsBlocking

BlockedNumberProvider kann mit adb-Befehlen geändert werden nach Ausführung von $ adb root. Beispiel:

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