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

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

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

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

คุณสมบัติ

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

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

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

การไหลของข้อมูล

บล็อกการไหลของข้อมูลตัวเลข

รูปที่ 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
  • หากผู้ให้บริการมีแอปพลิเคชันตัวเรียกเลขหมายหรือ Messenger ให้ใช้คุณสมบัติการจำกัดการโทร/ข้อความโดยใช้ BlockedNumberProvider
  • ผู้จำหน่ายแอปโทรออกและแอป Messenger บุคคลที่สามใช้ BlockedNumberProvider สำหรับคุณสมบัติการบล็อก

ข้อแนะนำสำหรับ OEM

หากก่อนหน้านี้อุปกรณ์ไม่เคยมีฟีเจอร์การจำกัดการโทร/ข้อความเพิ่มเติม ให้ใช้ฟีเจอร์การบล็อกหมายเลขใน Android Open Source Project (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 ที่เกี่ยวข้อง

โปรดทราบว่าอาจจำเป็นต้องใช้แอปพลิเคชันพีซีของพันธมิตรสำหรับการสำรองและกู้คืนเพื่อดำเนินการกู้คืนรายการบล็อกโดยใช้ 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