Telefon çok açık bir iletişim kanalı olduğundan (herkes istediği zaman istediği numarayı arayabilir veya mesaj gönderebilir), Android kullanıcılarının istenmeyen aramaları ve mesajları kolayca engelleme özelliğine ihtiyacı vardır.
N'den önce Android kullanıcıları, rahatsız edici telefon numaralarından gelen aramaları ve mesajları kısıtlamak için indirilen uygulamalara güvenmek zorundaydı. Bu uygulamaların çoğu ya istendiği gibi çalışmıyor ya da çağrıları ve mesajları engellemek için uygun API'ler olmadığından ideal olmayan bir deneyim sağlıyor.
Bazı üreticiler kendi engelleme çözümlerini kullanıma hazır olarak gönderebilir, ancak kullanıcılar cihaz değiştirirse birlikte çalışabilirlik eksikliği nedeniyle engellenenler listesini tamamen kaybedebilirler. Son olarak, kullanıcılar bu tür işlevsellik sağlayan arama uygulamaları ve mesajlaşma istemcileri kullanıyor olsalar bile, engellemenin hem arama hem de mesajlaşma için etkili olması için muhtemelen her uygulamada engelleme eylemini gerçekleştirmeleri gerekecektir.
Özellikler
Android 7.0 sürümü, kullanıcının belirttiği ve telefon iletişimleri (çağrılar, SMS, MMS) yoluyla iletişim kuramaması gereken telefon numaralarının bir listesini saklayan bir BlockedNumberProvider
içerik sağlayıcısı sunar. Sistem, bu numaralardan gelen aramaları ve kısa mesajları kısıtlayarak engellenen listedeki numaralara saygı duyacaktır. Android 7.0, engellenen numaraların listesini görüntüler ve kullanıcının numara eklemesine ve kaldırmasına olanak tanır.
Ayrıca numara engelleme özelliği, sistemin ve platformdaki ilgili uygulamaların, kullanıcının korunmasına ve deneyimin basitleştirilmesine yardımcı olmak için birlikte çalışmasını sağlar. Varsayılan çevirici, varsayılan mesajlaşma istemcisi, UICC ayrıcalıklı uygulama ve sistemle aynı imzaya sahip uygulamaların tümü doğrudan engellenen listeden okuyabilir ve bu listeye yazabilir. Engellenen numaralar sistemde saklandığından, kullanıcı hangi arama veya mesajlaşma uygulamasını kullanırsa kullansın, numaralar engellenmiş durumda kalır. Son olarak, engellenen numaralar listesi, üreticisine bakılmaksızın herhangi bir yeni cihaza geri yüklenebilir.
- Kullanıcının, kutudan çıktığı gibi çalışan bir engelleme özelliğine sahip olacağı ve uygulamaları değiştirdiğinde veya yeni bir telefon aldığında engellenenler listesini kaybetmeyeceği garanti edilecektir. Kullanıcıya en akıcı deneyimi sunmak için sistemdeki ilgili tüm uygulamalar aynı listeyi paylaşabilir.
- Uygulama geliştiricilerinin, engellenenler listesini ve gelen aramaları ve mesajları yönetmek için kendi yöntemlerini geliştirmelerine gerek yoktur. Platform tarafından sağlanan özelliği kullanabilirler.
- Kullanıcı tarafından varsayılan olarak seçilen Dialer/messenger uygulamaları sağlayıcıya okuyabilir ve yazabilir. Diğer uygulamalar,
createManageBlockedNumbersIntent()
işlevini kullanarak engelleme listesi yönetimi kullanıcı arayüzünü başlatabilir. - OEM'ler, bir engelleme özelliğini kullanıma hazır olarak sunmak için platform tarafından sağlanan özelliği kullanabilir. OEM'ler, kullanıcılar başka bir OEM'in cihazından geçiş yaptıklarında, engellenenler listesi de aktarılacağından daha iyi bir katılım deneyimi yaşayacaklarından emin olabilirler.
- Operatörün kendi çevirici veya mesajlaşma uygulaması varsa, kullanıcının bir engellenenler listesi tutmasına izin vermek için platform özelliğini yeniden kullanabilir. Yeni bir cihaz aldıklarında bile kullanıcının engelleme listesinin kullanıcılarda kalacağından emin olabilirler. Son olarak, operatör ayrıcalıklı tüm uygulamalar engelleme listesini okuyabilir; dolayısıyla operatör, engelleme listesine dayalı olarak kullanıcıya daha güçlü ek engelleme sağlamak isterse, bu artık bu özellikle mümkün.
Veri akışı
Örnekler ve kaynak
Numara engelleme yeni özelliğini kullanan örnek aramalar:
Engellenen numara yöneticisini uygulamadan başlat
Context.startActivity(telecomManager.createManageBlockedNumbersIntent(), null);
Engellenen numaraları sorgula
Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER, BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
Engellenen numarayı koy
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
Engellenen numarayı sil
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null);
Uygulama
Sayı engelleme özelliğini kullanmak için tamamlanması gereken üst düzey görevler şunlardır:
- OEM'ler,
BlockedNumberProvider
kullanarak cihazlarına çağrı/mesaj kısıtlama özelliklerini uygular - Operatörün çevirici veya mesajlaşma uygulaması varsa
BlockedNumberProvider
kullanarak çağrı/mesaj kısıtlama özelliklerini uygulayın - Üçüncü taraf çevirici ve mesajlaşma uygulaması satıcıları, engelleme özellikleri için
BlockedNumberProvider
kullanıyor
OEM'ler için öneriler
Cihaz daha önce herhangi bir ek arama/mesaj kısıtlama özelliğiyle birlikte gönderilmemişse, bu tür cihazların tümünde Android Açık Kaynak Projesi'ndeki (AOSP) numara engelleme özelliğini kullanın. Bir numaranın doğrudan çağrı kaydından veya bir mesaj dizisi içinden engellenmesi gibi, engelleme için makul giriş noktalarının desteklenmesi önerilir.
Cihaz daha önce arama/mesaj kısıtlama özellikleriyle birlikte gönderilmişse, özellikleri, engellenen tüm tam eşleşme telefon numaralarının BlockedNumberProvider,
Android Uyumluluğu'nda belirtilen bu özelliğin gereksinimlerini karşılayacağı şekilde uyarlayın. Tanım Belgesi (CDD).
Kesin eşlemeli telefon numaralarının engellenmesine ilişkin CDD gereklilikleri karşılandığı sürece, diğer tüm gelişmiş özellikler, özel sağlayıcılar ve özel kullanıcı arayüzü/kontroller aracılığıyla uygulanabilir. Temel numara engelleme özelliğiyle karışıklığı önlemek için bu diğer özelliklerin "gelişmiş" özellikler olarak etiketlenmesi önerilir.
API'ler
Kullanılan API'ler şunlardır:
-
TelecomManager API
-
Intent createManageBlockedNumbersIntent()
-
-
Carrier Config
-
KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
-
- Lütfen
BlockedNumberContract
bakın-
BlockedNumberContract
tarafından sağlanan API'ler -
boolean isBlocked(Context context, String phoneNumber)
-
int unblock(Context context, String phoneNumber)
-
boolean canCurrentUserBlockNumbers(Context context)
-
Kullanıcı arayüzü
AOSP'de sağlanan BlockedNumbersActivity.java kullanıcı arayüzü olduğu gibi kullanılabilir. Cihaz uygulayıcıları, ilgili CDD gerekliliklerini karşıladığı sürece kendi kullanıcı arayüzü sürümlerini de uygulayabilirler.
Engellenenler listesinin BlockedNumberProvider
kullanılarak geri yüklenmesi için ortağın yedekleme ve geri yüklemeye yönelik bilgisayar uygulamasının gerekli olabileceğini lütfen unutmayın. AOSP'de sağlanan engellenen numaralar arayüzü için aşağıdaki resimlere bakın.
Doğrulama
Uygulayıcılar, aşağıdaki CTS testlerini çalıştırarak kendi özellik sürümlerinin amaçlandığı gibi çalıştığından emin olabilirler:
android.provider.cts.BlockedNumberContractTest com.android.cts.numberblocking.hostside.NumberBlockingTest android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected android.telephony.cts.SmsManagerTest#testSmsBlocking
BlockedNumberProvider
$ adb root
çalıştırıldıktan sonra adb
komutları kullanılarak değiştirilebilir. Örneğin:
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