Menerapkan Nomor Telepon Blok

Karena telepon adalah saluran komunikasi terbuka - siapa pun dapat menelepon atau mengirim SMS ke nomor apa pun kapan saja - pengguna Android memerlukan kemampuan untuk memblokir panggilan dan SMS yang tidak diinginkan dengan mudah.

Sebelum N, pengguna Android harus mengandalkan aplikasi yang diunduh untuk membatasi panggilan dan SMS dari nomor telepon yang mengganggu. Banyak dari aplikasi tersebut tidak berfungsi seperti yang diinginkan 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, bahkan jika pengguna menggunakan aplikasi panggilan dan klien perpesanan yang menyediakan fungsionalitas seperti itu, mereka kemungkinan masih harus melakukan tindakan pemblokiran di setiap aplikasi agar pemblokiran dapat diterapkan baik untuk panggilan maupun SMS.

Fitur

Rilis Android 7.0 memperkenalkan penyedia konten BlockedNumberProvider yang menyimpan daftar nomor telepon yang telah ditentukan pengguna yang seharusnya tidak dapat menghubungi mereka melalui komunikasi telepon (panggilan, SMS, MMS). Sistem akan menghormati nomor dalam daftar yang diblokir dengan membatasi panggilan dan teks dari nomor tersebut. Android 7.0 menampilkan daftar nomor yang diblokir dan memungkinkan pengguna untuk menambah dan menghapus nomor.

Selanjutnya, fitur pemblokiran nomor memungkinkan sistem dan aplikasi yang relevan pada platform untuk bekerja sama untuk membantu melindungi pengguna dan menyederhanakan pengalaman. Dialer default, klien perpesanan default, aplikasi dengan hak istimewa UICC, dan aplikasi dengan tanda tangan yang sama dengan sistem, semuanya dapat langsung membaca dan menulis ke daftar yang diblokir. Karena nomor yang diblokir disimpan di sistem, apa pun aplikasi panggilan atau perpesanan yang digunakan pengguna, nomor tetap diblokir. Terakhir, daftar nomor yang diblokir dapat dipulihkan di perangkat baru apa pun, terlepas dari produsennya.

  • Pengguna akan dijamin memiliki fitur pemblokiran yang bekerja di luar kotak dan tidak akan kehilangan daftar blokir ketika mereka beralih aplikasi atau mendapatkan telepon baru. Semua aplikasi yang relevan di sistem dapat berbagi daftar yang sama untuk memberikan pengalaman yang paling efisien kepada pengguna.
  • Pengembang aplikasi tidak perlu mengembangkan cara mereka sendiri untuk mengelola daftar blokir dan panggilan serta pesan yang masuk. Mereka cukup menggunakan fitur yang disediakan platform.
  • Aplikasi dialer / messenger yang dipilih sebagai default oleh pengguna dapat membaca dan menulis ke penyedia. Aplikasi lain dapat meluncurkan antarmuka pengguna manajemen daftar blokir dengan menggunakan createManageBlockedNumbersIntent()
  • OEM dapat menggunakan fitur yang disediakan platform untuk mengirimkan fitur pemblokiran secara langsung. OEM dapat yakin bahwa ketika pengguna beralih dari perangkat OEM lain, mereka memiliki pengalaman orientasi yang lebih baik karena daftar blokir juga akan ditransfer.
  • Jika operator memiliki aplikasi dialer atau messenger sendiri, mereka dapat menggunakan kembali fitur platform untuk memungkinkan pengguna mempertahankan daftar blokir. Mereka dapat yakin bahwa daftar blokir pengguna dapat tetap bersama pengguna, bahkan ketika mereka mendapatkan perangkat baru. Akhirnya, semua aplikasi dengan hak istimewa operator dapat membaca daftar blokir, jadi jika operator ingin memberikan pemblokiran tambahan yang lebih kuat untuk pengguna berdasarkan daftar blokir, sekarang dimungkinkan dengan fitur ini.

Aliran data

blok aliran data angka

Gambar 1. Blok aliran data nomor telepon

Contoh dan sumber

Berikut adalah contoh panggilan menggunakan fitur baru pemblokiran nomor:

Luncurkan pengelola nomor yang diblokir dari aplikasi

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

Kueri 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);

Penerapan

Ini adalah tugas tingkat tinggi yang harus diselesaikan untuk menggunakan fitur pemblokiran nomor:

  • OEM menerapkan fitur pembatasan panggilan/pesan di perangkat mereka dengan menggunakan BlockedNumberProvider
  • Jika operator memiliki aplikasi dialer atau messenger, terapkan fitur pembatasan panggilan/pesan dengan menggunakan BlockedNumberProvider
  • Vendor aplikasi dialer dan messenger pihak ketiga menggunakan BlockedNumberProvider untuk fitur pemblokiran mereka

Rekomendasi untuk OEM

Jika perangkat sebelumnya tidak pernah dikirimkan dengan fitur pembatasan panggilan/pesan tambahan, gunakan fitur pemblokiran nomor di Android Open Source Project (AOSP) pada semua perangkat tersebut. Direkomendasikan bahwa titik masuk yang wajar untuk pemblokiran didukung, seperti memblokir nomor langsung dari log panggilan atau dalam utas pesan.

Jika perangkat sebelumnya telah dikirimkan dengan fitur pembatasan panggilan/pesan, sesuaikan fitur tersebut sehingga semua nomor telepon pencocokan ketat yang diblokir disimpan di BlockedNumberProvider, dan bahwa perilaku di sekitar penyedia memenuhi persyaratan untuk fitur ini yang diuraikan dalam Kompatibilitas Android Definisi Dokumen (CDD).

Fitur lanjutan lainnya dapat diimplementasikan melalui penyedia kustom dan UI/kontrol kustom, selama persyaratan CDD dipenuhi sehubungan dengan pemblokiran nomor telepon pencocokan ketat. Disarankan agar fitur lain tersebut diberi label sebagai fitur "lanjutan" untuk menghindari kebingungan dengan fitur pemblokiran nomor dasar.

Lebah

Berikut adalah API yang digunakan:

  • TelecomManager API
    • Intent createManageBlockedNumbersIntent()
  • Carrier Config
    • KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
  • Silakan merujuk ke BlockedNumberContract
    • API yang disediakan oleh BlockedNumberContract
    • boolean isBlocked(Context context, String phoneNumber)
    • int unblock(Context context, String phoneNumber)
    • boolean canCurrentUserBlockNumbers(Context context)

Antarmuka pengguna

Antarmuka pengguna BlockedNumbersActivity.java yang disediakan di AOSP dapat digunakan apa adanya. Implementer perangkat juga dapat mengimplementasikan versi UI mereka sendiri, asalkan memenuhi persyaratan CDD terkait.

Harap dicatat, aplikasi PC mitra untuk pencadangan dan pemulihan mungkin diperlukan untuk menerapkan pemulihan daftar blokir dengan menggunakan BlockedNumberProvider . Lihat gambar di bawah untuk antarmuka nomor yang diblokir yang disediakan di AOSP.

antarmuka pengguna nomor blok

Gambar 2. Blokir antarmuka pengguna nomor telepon

Validasi

Pelaksana dapat memastikan versi fitur mereka berfungsi sebagaimana dimaksud dengan menjalankan pengujian 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 . Sebagai 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