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
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)
- Von
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.
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