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