La téléphonie étant un canal de communication ouvert, n'importe qui peut appeler ou envoyez un SMS à n'importe quel numéro. Les utilisateurs d'Android doivent pouvoir bloquer les appels et SMS indésirables.
Avant la version 7.0 d'Android, les utilisateurs d'Android devaient s'appuyer sur les applications téléchargées pour limiter les appels et des SMS provenant de numéros de téléphone gênants. Beaucoup de ces applications ne fonctionnent pas comme souhaité ou offrent une expérience loin d'être idéale, car il n'existe pas d'API appropriées pour bloquer les appels et les messages.
Certains fabricants proposent leurs propres solutions de blocage prêtes à l'emploi, mais Si les utilisateurs changent d'appareil, ils risquent de perdre complètement la liste de blocage en raison de l'absence de l'interopérabilité. Enfin, même si les utilisateurs utilisent des applications de téléphonie et clients de messagerie qui fournissent une telle fonctionnalité, ils devront probablement effectuer l'action de blocage dans chaque application pour que le blocage prenne effet les appels et l'envoi de messages.
Fonctionnalités
La version Android 7.0 introduit un contenu BlockedNumberProvider
un fournisseur qui stocke une liste de numéros de téléphone spécifiés par l'utilisateur ne doit pas
pouvoir les contacter par téléphone (appels, SMS, MMS). Le système respectera les numéros de la liste de blocage en limitant les appels et les SMS émis depuis ces numéros. Android 7.0 affiche la liste des numéros bloqués et
permet à l'utilisateur d'ajouter
et de supprimer des numéros.
En outre, la fonctionnalité de blocage de numéro active le système et les applications correspondantes sur la plate-forme de fonctionner ensemble pour mieux protéger l'utilisateur expérience. Le numéroteur par défaut, le client de messagerie par défaut, l'application privilégiée par l'UICC et les applications ayant la même signature que le système peuvent toutes lire et écrire directement dans la liste de blocage. Comme les numéros bloqués sont stockés sur le système, quelles que soient les applications d'appel ou de chat utilisées par l'utilisateur, les numéros restent bloqués. Enfin, la liste des numéros bloqués peut être restaurée sur tout nouvel appareil, quel que soit le fabricant.
- L'utilisateur disposera d'une fonctionnalité de blocage prête à l'emploi et ne perdront pas leur liste de blocage lorsqu'ils changeront d'application ou qu'ils changeront de téléphone. Tout applications pertinentes du système peuvent partager la même liste pour fournir à l'utilisateur l'expérience la plus simple.
- Les développeurs d'applications n'ont pas besoin de développer leur propre méthode de gestion d'une liste de blocage ainsi que les appels et les messages reçus. Il lui suffit d'utiliser fournie par la plate-forme.
- Les applications Téléphone et Messenger sélectionnées par défaut par l'utilisateur peuvent :
en lecture et en écriture au fournisseur. D'autres applications peuvent lancer l'interface utilisateur de gestion de la liste de blocage à l'aide de
createManageBlockedNumbersIntent()
. - Les OEM peuvent utiliser la fonctionnalité fournie par la plate-forme pour proposer une fonctionnalité de blocage. prêt à l'emploi. Les OEM ont l'assurance que lorsque les utilisateurs passent de la plate-forme une meilleure expérience d'intégration, car la liste de blocage seront également transférées.
- Si l'opérateur possède sa propre application de téléphonie ou de messagerie, il peut réutiliser la plate-forme pour permettre à l'utilisateur de gérer une liste de blocage. Ils sont rassurés que l'utilisateur puisse conserver sa liste de blocage, même lorsqu'il reçoit une nouvelle appareil. Enfin, toutes les applications privilégiées par un opérateur peuvent lire la liste de blocage. Par conséquent, si le l'opérateur souhaite proposer à l'utilisateur des options de blocage supplémentaires en fonction de la liste de blocage, c'est désormais possible avec cette fonctionnalité.
Flux de données
Exemples et source
Voici des exemples d'appels utilisant la nouvelle fonctionnalité de blocage de numéros:
Lancer le gestionnaire de numéros bloqués depuis l'application
Context.startActivity(telecomManager.createManageBlockedNumbersIntent(), null);
Interroger les numéros bloqués
Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER, BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
Ajouter un numéro bloqué
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
Supprimer un numéro bloqué
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null);
Implémentation
Ce sont les tâches de haut niveau qui doivent être accomplies pour placer le blocage fonctionnalité à utiliser:
- Les OEM implémentent des fonctionnalités de restriction des appels/messages sur leurs appareils à l'aide de
BlockedNumberProvider
. - Si l'opérateur dispose d'une application Téléphone ou Messenger, implémentez les appels/messages.
des fonctionnalités de restriction à l'aide de
BlockedNumberProvider
- Les fournisseurs d'applications de numérotation et de messagerie tiers utilisent
BlockedNumberProvider
pour leurs fonctionnalités de blocage.
Recommandations pour les OEM
Si l'appareil n'a jamais été envoyé avec un appel/message supplémentaire auparavant de restriction, utilisez le blocage de numéro dans le package Android Open Source Projet (AOSP) sur tous ces appareils. Il est recommandé de prendre en charge des points d'entrée raisonnables pour le blocage, par exemple en bloquant un numéro directement depuis le journal des appels ou dans un fil de discussion.
Si l'appareil avait déjà été expédié avec des fonctionnalités de restriction des appels/messages,
adapter les fonctionnalités de façon à bloquer tous les numéros de téléphone à correspondance stricte ;
sont stockées dans BlockedNumberProvider,
et que le comportement
concernant le fournisseur répondent aux exigences relatives à cette fonctionnalité, décrites dans le
document de définition de compatibilité (CDD) Android.
Toute autre fonctionnalité avancée peut être implémentée via des fournisseurs et une interface utilisateur personnalisés. / contrôles, tant que les exigences concernant le CDD sont satisfaites en ce qui concerne le blocage des numéros de téléphone à correspondance stricte. Nous vous recommandons d'utiliser être qualifiées de fonctionnalités "avancées" pour éviter toute confusion avec les de blocage de numéro.
API
Voici les API en cours d'utilisation:
TelecomManager API
Intent createManageBlockedNumbersIntent()
Carrier Config
KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
- Veuillez consulter
BlockedNumberContract
- API fournies par
BlockedNumberContract
boolean isBlocked(Context context, String phoneNumber)
int unblock(Context context, String phoneNumber)
boolean canCurrentUserBlockNumbers(Context context)
- API fournies par
Interface utilisateur
L'interface utilisateur BlockedNumbersActivity.java fournie dans AOSP peut être utilisée comme l'adresse IP interne. Les responsables de la mise en œuvre d'appareils peuvent également implémenter leur propre version de l'interface utilisateur, à condition qu'elle répond aux exigences liées au CDD.
Veuillez noter que vous aurez peut-être besoin de l'application PC du partenaire pour la sauvegarde et la restauration
pour implémenter la restauration de la liste de blocage en utilisant
BlockedNumberProvider
Consultez les images ci-dessous pour l'interface des numéros bloqués fournie dans AOSP.
Validation
Les responsables de la mise en œuvre peuvent s'assurer que leur version de la fonctionnalité fonctionne comme prévu en exécutant les tests CTS suivants:
android.provider.cts.BlockedNumberContractTest com.android.cts.numberblocking.hostside.NumberBlockingTest android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected android.telephony.cts.SmsManagerTest#testSmsBlocking
Le BlockedNumberProvider
peut être manipulé à l'aide des commandes adb
.
après l'exécution de $ adb root
. Exemple :
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