ใช้การบล็อกหมายเลขโทรศัพท์

เพราะการโทรศัพท์เป็นช่องทางการสื่อสารแบบเปิดที่ทุกคนอาจโทรหาหรือ ส่งข้อความได้ทุกเมื่อ - ผู้ใช้ Android จะต้องสามารถบล็อก การโทรและรับส่งข้อความที่ไม่พึงประสงค์

ก่อน Android 7.0 ผู้ใช้ Android ต้องอาศัยแอปที่ดาวน์โหลดมาเพื่อจำกัดการโทรและ SMS จากหมายเลขโทรศัพท์ที่รบกวน แอปจำนวนมากเหล่านั้นทำงานไม่เป็นไปตามที่ต้องการหรือให้ประสบการณ์การใช้งานที่ไม่ดีนักเนื่องจากไม่มี API ที่ถูกต้องสำหรับการบล็อกการโทรและข้อความ

ผู้ผลิตบางรายอาจจัดส่งโซลูชันการบล็อกของตนเองให้ใช้ได้ทันที แต่ หากผู้ใช้เปลี่ยนอุปกรณ์ รายชื่อที่บล็อกอาจหายไปทั้งหมดเนื่องจากไม่มีประสิทธิภาพ ของความสามารถในการทำงานร่วมกัน สุดท้ายนี้ แม้ว่าผู้ใช้จะใช้แอปโทรศัพท์และ ที่มีฟังก์ชันดังกล่าว ลูกค้าก็ยังคงต้อง ดำเนินการบล็อกในแต่ละแอป เพื่อให้การบล็อกมีผลกับทั้ง การโทรและส่งข้อความ

ฟีเจอร์

Android 7.0 เปิดตัวเนื้อหา BlockedNumberProvider ที่จัดเก็บรายการหมายเลขโทรศัพท์ที่ผู้ใช้ได้ระบุไว้ไม่ควร สามารถติดต่อผ่านการสื่อสารทางโทรศัพท์ (การโทร, SMS, MMS) ระบบจะปฏิบัติตามหมายเลขในรายการที่ถูกบล็อกด้วยการจำกัดการโทรและ ข้อความจากตัวเลขเหล่านั้น Android 7.0 จะแสดงรายการหมายเลขที่ถูกบล็อกและ ช่วยให้ผู้ใช้เพิ่มและนำหมายเลขออกได้

นอกจากนี้ ฟีเจอร์บล็อกหมายเลขยังช่วยให้ระบบและแอปที่เกี่ยวข้องสามารถ แพลตฟอร์มในการทำงานร่วมกันเพื่อช่วยปกป้องผู้ใช้และเพื่อทำให้ ประสบการณ์การใช้งาน เครื่องมือโทรเริ่มต้น ไคลเอ็นต์การรับส่งข้อความเริ่มต้น แอปที่มีสิทธิ์ UICC และแอปที่มีลายเซ็นเดียวกับระบบทั้งหมดจะอ่านและเขียนไปยังรายการที่บล็อกได้โดยตรง เนื่องจากระบบจัดเก็บหมายเลขที่ถูกบล็อกไว้ในระบบ ไม่ว่าผู้ใช้จะใช้แอปการโทรหรือแอปรับส่งข้อความใดก็ตาม หมายเลขจะยังคงอยู่ ถูกบล็อก สุดท้ายนี้ ระบบอาจคืนค่ารายการหมายเลขที่ถูกบล็อกในอุปกรณ์ใหม่ โดยไม่คํานึงถึงผู้ผลิต

  • ผู้ใช้จะได้รับฟีเจอร์การบล็อกที่ใช้งานได้ทันทีและจะไม่สูญเสียรายการที่บล็อกเมื่อเปลี่ยนแอปหรือซื้อโทรศัพท์เครื่องใหม่ แอปที่เกี่ยวข้องทั้งหมดในระบบสามารถแชร์รายการเดียวกันเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นที่สุด
  • นักพัฒนาแอปไม่จำเป็นต้องพัฒนาวิธีของตนเองในการจัดการรายการบล็อก ตลอดจนการโทรและข้อความที่ส่งเข้ามา บุตรหลานสามารถใช้ ฟีเจอร์ที่แพลตฟอร์มมีให้
  • แอปโทรศัพท์/การรับส่งข้อความที่ผู้ใช้เลือกไว้เป็นค่าเริ่มต้นจะอ่านและเขียนไปยังผู้ให้บริการได้ แอปอื่นๆ สามารถเปิดอินเทอร์เฟซผู้ใช้สำหรับการจัดการรายการที่บล็อกได้โดยใช้ createManageBlockedNumbersIntent()
  • OEM สามารถใช้ฟีเจอร์ที่แพลตฟอร์มมีให้เพื่อจัดส่งฟีเจอร์การบล็อก ตั้งแต่แกะกล่อง OEM สามารถมั่นใจได้ว่าเมื่อผู้ใช้เปลี่ยนจากอุปกรณ์ของ OEM รายอื่น ผู้ใช้จะได้รับประสบการณ์การเริ่มต้นใช้งานที่ดีขึ้นเนื่องจากระบบจะโอนรายการที่บล็อกด้วย
  • หากผู้ให้บริการมีแอปโทรศัพท์หรือแอปรับส่งข้อความของตนเอง ผู้ให้บริการจะใช้แพลตฟอร์มซ้ำได้ ที่ช่วยให้ผู้ใช้ดูแลรายการบล็อกได้ ลูกค้ามั่นใจได้ รายการที่บล็อกของผู้ใช้จะยังคงอยู่กับผู้ใช้ แม้จะมี อุปกรณ์ สุดท้าย แอปที่มีสิทธิ์ของผู้ให้บริการทุกแอปจะอ่านรายการที่บล็อกได้ ดังนั้นหากผู้ให้บริการต้องการบล็อกเพิ่มเติมที่มีประสิทธิภาพมากขึ้นสำหรับผู้ใช้ตามรายการที่บล็อก ฟีเจอร์นี้จะช่วยให้เป็นไปได้

โฟลว์ข้อมูล

บล็อกหมายเลขโฟลว์ข้อมูล

รูปที่ 1 บล็อกการรับส่งข้อมูลของหมายเลขโทรศัพท์

ตัวอย่างและแหล่งที่มา

ตัวอย่างการโทรโดยใช้ฟีเจอร์ใหม่ในการบล็อกหมายเลขมีดังนี้

เปิดผู้จัดการหมายเลขที่ถูกบล็อกจากแอป

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

ค้นหาหมายเลขที่ถูกบล็อก

Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI,
         new String[]{BlockedNumbers.COLUMN_ID,
         BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
         BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);

ใส่หมายเลขที่ถูกบล็อก

ContentValues values = new ContentValues();
values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);

ลบหมายเลขที่ถูกบล็อก

ContentValues values = new ContentValues();
values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
getContentResolver().delete(uri, null, null);

การใช้งาน

ต่อไปนี้คืองานระดับสูงที่ต้องทำเพื่อใช้ฟีเจอร์การบล็อกหมายเลข

  • OEM ใช้ฟีเจอร์การจำกัดการโทร/ข้อความในอุปกรณ์โดยใช้ BlockedNumberProvider
  • หากผู้ให้บริการมีแอปโทรศัพท์หรือแอปรับส่งข้อความ ให้ใช้การโทร/ข้อความ ฟีเจอร์การจำกัดโดยใช้ BlockedNumberProvider
  • ผู้ให้บริการแอปโทรศัพท์และแอปรับส่งข้อความของบุคคลที่สามใช้ BlockedNumberProviderสำหรับฟีเจอร์การบล็อก

คำแนะนำสำหรับ OEM

หากก่อนหน้านี้อุปกรณ์ไม่เคยมาพร้อมกับฟีเจอร์การจำกัดการโทร/ข้อความเพิ่มเติม ให้ใช้ฟีเจอร์การบล็อกหมายเลขในโครงการโอเพนซอร์ส Android (AOSP) ในอุปกรณ์ดังกล่าวทั้งหมด ขอแนะนำให้รองรับจุดแรกเข้าที่สมเหตุสมผลสำหรับการบล็อก เช่น การบล็อกหมายเลขจากบันทึกการโทรหรือภายในชุดข้อความ

หากก่อนหน้านี้อุปกรณ์มาพร้อมกับฟีเจอร์การจำกัดการโทร/ข้อความ ให้ปรับแต่งฟีเจอร์ดังกล่าวเพื่อให้หมายเลขโทรศัพท์ที่ตรงกันทั้งหมดที่ถูกบล็อกจัดเก็บไว้ใน BlockedNumberProvider, และลักษณะการทํางานของผู้ให้บริการเป็นไปตามข้อกําหนดสําหรับฟีเจอร์นี้ที่ระบุไว้ในเอกสารข้อกําหนดความเข้ากันได้ของ Android (CDD)

ฟีเจอร์ขั้นสูงอื่นๆ ใช้งานได้ผ่านผู้ให้บริการที่กำหนดเองและ UI ที่กำหนดเอง / ควบคุม ตราบเท่าที่ข้อกำหนดของ CDD เป็นไปตาม การบล็อกหมายเลขโทรศัพท์ที่ตรงกันแบบเข้มงวด ขอแนะนำให้ใช้ฟีเจอร์อื่นๆ เป็นคุณลักษณะ "ขั้นสูง" เพื่อไม่ให้สับสนกับ บล็อกหมายเลข

API

API ที่ใช้อยู่มีดังนี้

  • TelecomManager API
    • Intent createManageBlockedNumbersIntent()
  • Carrier Config
    • KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
  • โปรดอ้างอิง BlockedNumberContract
    • API จาก BlockedNumberContract
    • boolean isBlocked(Context context, String phoneNumber)
    • int unblock(Context context, String phoneNumber)
    • boolean canCurrentUserBlockNumbers(Context context)

ส่วนติดต่อผู้ใช้

อินเทอร์เฟซผู้ใช้ BlockedNumbersActivity.java อยู่ใน AOSP สามารถใช้เป็น ผู้ใช้อุปกรณ์อาจนำ UI เวอร์ชันของตนเองมาใช้ได้ ตราบใดที่ เป็นไปตามข้อกำหนดของ CDD ที่เกี่ยวข้อง

โปรดทราบว่าอาจต้องใช้แอปสำหรับ PC ของพาร์ทเนอร์เพื่อสำรองและกู้คืนข้อมูล เพื่อใช้การคืนค่ารายการบล็อกโดยใช้ BlockedNumberProvider ดูรูปภาพของ ให้กับอินเทอร์เฟซตัวเลขที่ระบุใน AOSP

อินเทอร์เฟซผู้ใช้ของฟีเจอร์บล็อกหมายเลข

รูปที่ 2 อินเทอร์เฟซผู้ใช้สำหรับบล็อกหมายเลขโทรศัพท์

การตรวจสอบความถูกต้อง

ผู้ติดตั้งใช้งานจะมั่นใจได้ว่าฟีเจอร์เวอร์ชันของตนทํางานตามที่ต้องการ เรียกใช้การทดสอบ CTS ต่อไปนี้

android.provider.cts.BlockedNumberContractTest
com.android.cts.numberblocking.hostside.NumberBlockingTest
android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected
android.telephony.cts.SmsManagerTest#testSmsBlocking

คุณสามารถดําเนินการกับ BlockedNumberProvider โดยใช้คําสั่ง adbหลังจากเรียกใช้ $ adb root เช่น

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