เพราะการโทรศัพท์เป็นช่องทางการสื่อสารแบบเปิดที่ทุกคนอาจโทรหาหรือ ส่งข้อความได้ทุกเมื่อ - ผู้ใช้ Android จะต้องสามารถบล็อก การโทรและรับส่งข้อความที่ไม่พึงประสงค์
ก่อน Android 7.0 ผู้ใช้ Android ต้องอาศัยแอปที่ดาวน์โหลดมาเพื่อจำกัดการโทรและ SMS จากหมายเลขโทรศัพท์ที่รบกวน แอปจำนวนมากเหล่านั้นทำงานไม่เป็นไปตามที่ต้องการหรือให้ประสบการณ์การใช้งานที่ไม่ดีนักเนื่องจากไม่มี API ที่ถูกต้องสำหรับการบล็อกการโทรและข้อความ
ผู้ผลิตบางรายอาจจัดส่งโซลูชันการบล็อกของตนเองให้ใช้ได้ทันที แต่ หากผู้ใช้เปลี่ยนอุปกรณ์ รายชื่อที่บล็อกอาจหายไปทั้งหมดเนื่องจากไม่มีประสิทธิภาพ ของความสามารถในการทำงานร่วมกัน สุดท้ายนี้ แม้ว่าผู้ใช้จะใช้แอปโทรศัพท์และ ที่มีฟังก์ชันดังกล่าว ลูกค้าก็ยังคงต้อง ดำเนินการบล็อกในแต่ละแอป เพื่อให้การบล็อกมีผลกับทั้ง การโทรและส่งข้อความ
ฟีเจอร์
Android 7.0 เปิดตัวเนื้อหา BlockedNumberProvider
ที่จัดเก็บรายการหมายเลขโทรศัพท์ที่ผู้ใช้ได้ระบุไว้ไม่ควร
สามารถติดต่อผ่านการสื่อสารทางโทรศัพท์ (การโทร, SMS, MMS)
ระบบจะปฏิบัติตามหมายเลขในรายการที่ถูกบล็อกด้วยการจำกัดการโทรและ
ข้อความจากตัวเลขเหล่านั้น Android 7.0 จะแสดงรายการหมายเลขที่ถูกบล็อกและ
ช่วยให้ผู้ใช้เพิ่มและนำหมายเลขออกได้
นอกจากนี้ ฟีเจอร์บล็อกหมายเลขยังช่วยให้ระบบและแอปที่เกี่ยวข้องสามารถ แพลตฟอร์มในการทำงานร่วมกันเพื่อช่วยปกป้องผู้ใช้และเพื่อทำให้ ประสบการณ์การใช้งาน เครื่องมือโทรเริ่มต้น ไคลเอ็นต์การรับส่งข้อความเริ่มต้น แอปที่มีสิทธิ์ UICC และแอปที่มีลายเซ็นเดียวกับระบบทั้งหมดจะอ่านและเขียนไปยังรายการที่บล็อกได้โดยตรง เนื่องจากระบบจัดเก็บหมายเลขที่ถูกบล็อกไว้ในระบบ ไม่ว่าผู้ใช้จะใช้แอปการโทรหรือแอปรับส่งข้อความใดก็ตาม หมายเลขจะยังคงอยู่ ถูกบล็อก สุดท้ายนี้ ระบบอาจคืนค่ารายการหมายเลขที่ถูกบล็อกในอุปกรณ์ใหม่ โดยไม่คํานึงถึงผู้ผลิต
- ผู้ใช้จะได้รับฟีเจอร์การบล็อกที่ใช้งานได้ทันทีและจะไม่สูญเสียรายการที่บล็อกเมื่อเปลี่ยนแอปหรือซื้อโทรศัพท์เครื่องใหม่ แอปที่เกี่ยวข้องทั้งหมดในระบบสามารถแชร์รายการเดียวกันเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นที่สุด
- นักพัฒนาแอปไม่จำเป็นต้องพัฒนาวิธีของตนเองในการจัดการรายการบล็อก ตลอดจนการโทรและข้อความที่ส่งเข้ามา บุตรหลานสามารถใช้ ฟีเจอร์ที่แพลตฟอร์มมีให้
- แอปโทรศัพท์/การรับส่งข้อความที่ผู้ใช้เลือกไว้เป็นค่าเริ่มต้นจะอ่านและเขียนไปยังผู้ให้บริการได้ แอปอื่นๆ สามารถเปิดอินเทอร์เฟซผู้ใช้สำหรับการจัดการรายการที่บล็อกได้โดยใช้
createManageBlockedNumbersIntent()
- OEM สามารถใช้ฟีเจอร์ที่แพลตฟอร์มมีให้เพื่อจัดส่งฟีเจอร์การบล็อก ตั้งแต่แกะกล่อง OEM สามารถมั่นใจได้ว่าเมื่อผู้ใช้เปลี่ยนจากอุปกรณ์ของ OEM รายอื่น ผู้ใช้จะได้รับประสบการณ์การเริ่มต้นใช้งานที่ดีขึ้นเนื่องจากระบบจะโอนรายการที่บล็อกด้วย
- หากผู้ให้บริการมีแอปโทรศัพท์หรือแอปรับส่งข้อความของตนเอง ผู้ให้บริการจะใช้แพลตฟอร์มซ้ำได้ ที่ช่วยให้ผู้ใช้ดูแลรายการบล็อกได้ ลูกค้ามั่นใจได้ รายการที่บล็อกของผู้ใช้จะยังคงอยู่กับผู้ใช้ แม้จะมี อุปกรณ์ สุดท้าย แอปที่มีสิทธิ์ของผู้ให้บริการทุกแอปจะอ่านรายการที่บล็อกได้ ดังนั้นหากผู้ให้บริการต้องการบล็อกเพิ่มเติมที่มีประสิทธิภาพมากขึ้นสำหรับผู้ใช้ตามรายการที่บล็อก ฟีเจอร์นี้จะช่วยให้เป็นไปได้
โฟลว์ข้อมูล
ตัวอย่างและแหล่งที่มา
ตัวอย่างการโทรโดยใช้ฟีเจอร์ใหม่ในการบล็อกหมายเลขมีดังนี้
เปิดผู้จัดการหมายเลขที่ถูกบล็อกจากแอป
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)
- API จาก
ส่วนติดต่อผู้ใช้
อินเทอร์เฟซผู้ใช้ BlockedNumbersActivity.java อยู่ใน AOSP สามารถใช้เป็น ผู้ใช้อุปกรณ์อาจนำ UI เวอร์ชันของตนเองมาใช้ได้ ตราบใดที่ เป็นไปตามข้อกำหนดของ CDD ที่เกี่ยวข้อง
โปรดทราบว่าอาจต้องใช้แอปสำหรับ PC ของพาร์ทเนอร์เพื่อสำรองและกู้คืนข้อมูล
เพื่อใช้การคืนค่ารายการบล็อกโดยใช้
BlockedNumberProvider
ดูรูปภาพของ
ให้กับอินเทอร์เฟซตัวเลขที่ระบุใน AOSP
การตรวจสอบความถูกต้อง
ผู้ติดตั้งใช้งานจะมั่นใจได้ว่าฟีเจอร์เวอร์ชันของตนทํางานตามที่ต้องการ เรียกใช้การทดสอบ 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