Karena telepon adalah saluran komunikasi yang terbuka, siapa pun dapat menelepon atau teks nomor berapa saja setiap saat - pengguna Android memerlukan kemampuan untuk memblokir panggilan dan pesan teks yang tidak diinginkan.
Sebelum Android 7.0, pengguna Android harus mengandalkan aplikasi yang diunduh untuk membatasi panggilan dan teks dari nomor telepon yang mengganggu. Banyak dari aplikasi tersebut tidak berfungsi sebagai menginginkan atau memberikan pengalaman yang kurang ideal karena tidak ada API yang tepat untuk memblokir panggilan dan pesan.
Beberapa produsen mungkin mengirimkan solusi pemblokiran mereka sendiri secara langsung, tetapi jika pengguna beralih perangkat, mereka mungkin kehilangan daftar yang diblokir sepenuhnya karena kurangnya interoperabilitas. Terakhir, meskipun pengguna menggunakan aplikasi panggilan dan klien pesan yang menyediakan fungsi tersebut, mereka mungkin masih harus melakukan tindakan pemblokiran di setiap aplikasi agar pemblokiran berlaku untuk panggilan dan SMS.
Fitur
Rilis Android 7.0 memperkenalkan konten BlockedNumberProvider
penyedia yang menyimpan daftar nomor telepon yang telah ditetapkan pengguna tidak boleh
dapat menghubungi mereka melalui komunikasi telepon (panggilan, SMS, MMS). Tujuan
sistem akan menerima nomor dalam daftar yang diblokir
dengan membatasi panggilan dan
teks dari angka tersebut. Android 7.0 menampilkan daftar nomor yang diblokir dan
memungkinkan pengguna
menambahkan dan menghapus nomor.
Selanjutnya, fitur pemblokir nomor memungkinkan sistem dan aplikasi yang relevan di platform untuk bekerja sama guna membantu melindungi pengguna dan menyederhanakan pengalaman yang lancar bagi developer. Telepon default, klien pesan default, aplikasi dengan hak istimewa UICC, dan aplikasi dengan tanda tangan yang sama dengan sistem dapat langsung membaca dan menulis ke daftar yang diblokir. Karena nomor yang diblokir disimpan di sistem, tidak peduli aplikasi panggilan atau pesan apa yang digunakan pengguna, angka tersebut tetap diblokir. Terakhir, daftar nomor yang diblokir dapat dipulihkan di perangkat baru apa pun, terlepas dari produsennya.
- Pengguna akan dijamin memiliki fitur pemblokiran yang berfungsi secara otomatis dan tidak akan kehilangan daftar blokir saat beralih aplikasi atau mendapatkan ponsel baru. Semua aplikasi yang relevan pada sistem dapat berbagi daftar yang sama untuk memberi pengguna pengalaman yang paling efisien.
- Developer aplikasi tidak perlu mengembangkan caranya sendiri untuk mengelola daftar blokir serta panggilan dan pesan yang masuk. Mereka cukup menggunakan yang disediakan platform ini.
- Aplikasi telepon/messenger yang dipilih sebagai default oleh pengguna dapat
membaca dan menulis ke penyedia. Aplikasi lain dapat meluncurkan antarmuka pengguna pengelolaan daftar yang tidak diizinkan
dengan menggunakan
createManageBlockedNumbersIntent()
- OEM dapat menggunakan fitur yang disediakan platform untuk mengirimkan fitur pemblokiran secara langsung. OEM dapat yakin bahwa saat pengguna beralih dari perangkat OEM lain, mereka akan memiliki pengalaman orientasi yang lebih baik karena daftar blokir juga akan ditransfer.
- Jika operator memiliki aplikasi telepon atau messenger sendiri, mereka dapat menggunakan kembali platform yang memungkinkan pengguna untuk mengelola daftar blokir. Mereka tidak perlu khawatir bahwa daftar blokir pengguna itu dapat tetap berada di samping pengguna, bahkan ketika mereka mendapatkan perangkat seluler. Terakhir, semua aplikasi dengan hak istimewa operator dapat membaca daftar blokir, jadi jika operator ingin menyediakan beberapa pemblokiran tambahan yang lebih kuat bagi pengguna berdasarkan daftar blokir, yang sekarang bisa dilakukan dengan fitur ini.
Aliran data
Contoh dan sumber
Berikut ini contoh panggilan yang menggunakan fitur baru pemblokir nomor:
Meluncurkan pengelola nomor yang diblokir dari aplikasi
Context.startActivity(telecomManager.createManageBlockedNumbersIntent(), null);
Kueri untuk nomor yang diblokir
Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER, BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
Masukkan nomor yang diblokir
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
Hapus nomor yang diblokir
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null);
Implementasi
Ini adalah tugas tingkat tinggi yang harus diselesaikan untuk fitur yang dapat digunakan:
- OEM menerapkan fitur pembatasan panggilan/pesan di perangkat mereka menggunakan
BlockedNumberProvider
- Jika operator memiliki aplikasi telepon atau messenger, implementasikan panggilan/pesan
fitur pembatasan menggunakan
BlockedNumberProvider
- Vendor aplikasi telepon dan messenger pihak ketiga menggunakan
BlockedNumberProvider
untuk fitur pemblokirannya
Rekomendasi untuk OEM
Jika perangkat sebelumnya tidak pernah dikirim dengan panggilan/pesan tambahan fitur pembatasan, gunakan fitur pemblokir nomor di Android Open Source Project (AOSP) di semua perangkat tersebut. Sebaiknya entri yang wajar titik untuk pemblokiran didukung, seperti memblokir nomor langsung dari panggilan atau dalam rangkaian pesan.
Jika perangkat sebelumnya telah dikirim
dengan fitur pembatasan panggilan/pesan,
menyesuaikan fitur sehingga semua nomor telepon yang cocok dengan aturan ketat yang diblokir
disimpan di BlockedNumberProvider,
dan perilakunya
seputar penyedia memenuhi persyaratan untuk fitur ini yang diuraikan dalam
Compatibility Definition Document (CDD) Android.
Fitur lanjutan lainnya dapat diterapkan melalui penyedia kustom dan UI kustom / kontrol yang lebih tinggi, selama persyaratan CDD terpenuhi terkait memblokir nomor telepon yang dicocokkan secara ketat. Disarankan agar fitur lain tersebut diberi label sebagai fitur “lanjutan” untuk menghindari kebingungan dengan fitur pemblokir nomor.
API
Berikut adalah API yang digunakan:
TelecomManager API
Intent createManageBlockedNumbersIntent()
Carrier Config
KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
- Harap lihat
BlockedNumberContract
- API disediakan oleh
BlockedNumberContract
boolean isBlocked(Context context, String phoneNumber)
int unblock(Context context, String phoneNumber)
boolean canCurrentUserBlockNumbers(Context context)
- API disediakan oleh
Antarmuka pengguna
Antarmuka pengguna BlockedNumbersActivity.java yang disediakan di AOSP dapat digunakan sebagai alamat IP internalnya. Pengimplementasi perangkat juga bisa mengimplementasikan versi UI mereka sendiri, selama memenuhi persyaratan CDD terkait.
Perhatikan bahwa aplikasi PC partner untuk pencadangan dan pemulihan mungkin diperlukan
untuk mengimplementasikan pemulihan daftar
blok dengan menggunakan
BlockedNumberProvider
. Lihat gambar di bawah untuk konten yang diblokir
yang disediakan dalam AOSP.
Validasi
Pelaksana dapat memastikan versi fitur mereka berfungsi sebagaimana mestinya oleh menjalankan uji CTS berikut:
android.provider.cts.BlockedNumberContractTest com.android.cts.numberblocking.hostside.NumberBlockingTest android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected android.telephony.cts.SmsManagerTest#testSmsBlocking
BlockedNumberProvider
dapat dimanipulasi menggunakan perintah adb
setelah menjalankan $ adb root
. Contoh:
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