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

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

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

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

ฟีเจอร์

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