แอปการโทรช่วยให้ผู้ใช้รับสายหรือโทรด้วยเสียงหรือวิดีโอคอลใน อุปกรณ์ แอปการโทรใช้อินเทอร์เฟซผู้ใช้ของตนเองในการโทรแทนการใช้ อินเทอร์เฟซแอปโทรศัพท์เริ่มต้นดังที่แสดงในภาพหน้าจอต่อไปนี้
เฟรมเวิร์ก Android มีแพ็กเกจ android.telecom
ซึ่ง
มีชั้นเรียนที่ช่วยคุณสร้างแอปโทรตามโทรคมนาคม
การสร้างแอปของคุณตามเฟรมเวิร์กโทรคมนาคมมอบ
ประโยชน์ดังต่อไปนี้
- แอปของคุณทำงานร่วมกับระบบย่อยระบบโทรคมนาคมแบบเนทีฟได้อย่างถูกต้องใน อุปกรณ์
- แอปของคุณทํางานร่วมกับแอปการโทรอื่นๆ ที่ปฏิบัติตามข้อกําหนดด้วยเช่นกันได้อย่างถูกต้อง กรอบการทำงาน
- เฟรมเวิร์กนี้จะช่วยให้แอปจัดการการกำหนดเส้นทางเสียงและวิดีโอได้
- เฟรมเวิร์กนี้ช่วยให้แอปทราบว่าการโทรมุ่งเน้นหรือไม่
การประกาศและสิทธิ์ในไฟล์ Manifest
ในไฟล์ Manifest ของแอป ให้ประกาศว่าแอปของคุณใช้
MANAGE_OWN_CALLS
สิทธิ์ตามที่แสดงในตัวอย่างต่อไปนี้
<manifest … >
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
</manifest>
ดูข้อมูลเพิ่มเติมเกี่ยวกับการประกาศสิทธิ์ของแอปได้ที่ สิทธิ์
คุณต้องประกาศบริการที่ระบุคลาสที่นำพารามิเตอร์
ConnectionService
ชั้นเรียนในแอปของคุณ โทรคมนาคม
ระบบย่อยกำหนดให้บริการต้องประกาศสิทธิ์ BIND_TELECOM_CONNECTION_SERVICE
เชื่อมโยงกับโดเมนได้ ตัวอย่างต่อไปนี้แสดงวิธีประกาศบริการใน
ไฟล์ Manifest ของแอป
<service android:name="com.example.MyConnectionService"
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter>
<action android:name="android.telecom.ConnectionService" />
</intent-filter>
</service>
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการประกาศคอมโพเนนต์ของแอป รวมถึงบริการ โปรดดู คอมโพเนนต์ของแอป
ใช้บริการการเชื่อมต่อ
แอปการโทรต้องติดตั้งใช้งานคลาส ConnectionService
ที่เชื่อมโยงกับระบบย่อยโทรคมนาคม
การใช้งาน ConnectionService
ของคุณควรลบล้าง
วิธีการต่อไปนี้
onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest)
ระบบย่อยโทรคมนาคมเรียกวิธีนี้เพื่อตอบสนองต่อ แอปของคุณกำลังโทรหา
placeCall(Uri, Bundle)
เพื่อสร้างสายโทรออกใหม่ แอปของคุณแสดงผลอินสแตนซ์ใหม่ของการใช้งานคลาสConnection
(ดูข้อมูลเพิ่มเติมได้ที่ ใช้การเชื่อมต่อ) เพื่อแสดง สายโทรออก คุณปรับแต่งการเชื่อมต่อขาออกเพิ่มเติมได้โดยทําดังนี้ การดำเนินการต่อไปนี้- แอปของคุณควรเรียกเมธอด
setConnectionProperties(int)
ด้วยค่าคงที่PROPERTY_SELF_MANAGED
เป็นอาร์กิวเมนต์ เพื่อระบุว่าการเชื่อมต่อมาจากแอปการโทร - หากแอปรองรับการพักสาย ให้เรียกใช้เมธอด
setConnectionCapabilities(int)
และตั้งค่า อาร์กิวเมนต์ค่าบิตมาสก์ของค่าคงที่CAPABILITY_HOLD
และCAPABILITY_SUPPORT_HOLD
- หากต้องการตั้งชื่อผู้โทร ให้ใช้วิธีการ
setCallerDisplayName(String, int)
ผ่านPRESENTATION_ALLOWED
เป็นค่าคงที่เป็นพารามิเตอร์int
เพื่อระบุว่าชื่อผู้โทรควร ได้อีกด้วย - หากต้องการตรวจสอบว่าสายที่โทรออกมีสถานะวิดีโอที่เหมาะสม โปรดโทรหา
setVideoState(int)
ของออบเจ็กต์Connection
และส่งค่าที่แสดงผลโดย เมธอดgetVideoState()
ของConnectionRequest
ออบเจ็กต์
- แอปของคุณควรเรียกเมธอด
onCreateOutgoingConnectionFailed(PhoneAccountHandle, ConnectionRequest)
ระบบย่อยโทรคมนาคมจะเรียกวิธีนี้เมื่อแอปของคุณเรียกใช้เมธอด
placeCall(Uri, Bundle)
แต่การโทรออกไม่สามารถ ได้ เพื่อให้สอดคล้องกับสถานการณ์นี้ แอปของคุณควรแจ้งให้ผู้ใช้ทราบ (สำหรับ เช่น การใช้กล่องการแจ้งเตือนหรือข้อความโทสต์) ว่าไม่สามารถโทรออก วางแล้ว แอปของคุณอาจโทรออกไม่ได้หากมีการเชื่อมต่ออยู่ หมายเลขฉุกเฉิน หรือหากมีสายที่สนทนาอยู่ในแอปอื่นที่ไม่สามารถ พักสายก่อนโทรออกonCreateIncomingConnection(PhoneAccountHandle, ConnectionRequest)
ระบบย่อยโทรคมนาคมเรียกเมธอดนี้เมื่อแอปของคุณเรียกใช้เมธอด
addNewIncomingCall(PhoneAccountHandle, Bundle)
เพื่อแจ้งระบบเมื่อมีสายเรียกเข้าใหม่ในแอป แอปของคุณแสดงผล อินสแตนซ์ใหม่ของการติดตั้งใช้งานConnection
(สำหรับ ดูข้อมูลเพิ่มเติมที่ใช้การเชื่อมต่อ) เพื่อแสดงสายเรียกเข้าใหม่ คุณสามารถปรับแต่งการกำหนดค่า โดยดำเนินการดังต่อไปนี้- แอปของคุณควรเรียกเมธอด
setConnectionProperties(int)
ด้วยค่าคงที่PROPERTY_SELF_MANAGED
เป็นอาร์กิวเมนต์ เพื่อระบุว่าการเชื่อมต่อมาจากแอปการโทร - หากแอปรองรับการพักสาย ให้เรียกใช้เมธอด
setConnectionCapabilities(int)
และตั้งค่า อาร์กิวเมนต์ค่าบิตมาสก์ของค่าคงที่CAPABILITY_HOLD
และCAPABILITY_SUPPORT_HOLD
- หากต้องการตั้งชื่อผู้โทร ให้ใช้วิธีการ
setCallerDisplayName(String, int)
ผ่านPRESENTATION_ALLOWED
เป็นค่าคงที่เป็นพารามิเตอร์int
เพื่อระบุว่าชื่อผู้โทรควร ได้อีกด้วย - หากต้องการระบุหมายเลขโทรศัพท์หรือที่อยู่ของสายเรียกเข้า ให้ใช้
เมธอด
setAddress(Uri, int)
ของออบเจ็กต์Connection
- หากต้องการตรวจสอบว่าสายที่โทรออกมีสถานะวิดีโอที่เหมาะสม โปรดโทรหา
setVideoState(int)
ของออบเจ็กต์Connection
และส่งค่าที่แสดงผลโดย เมธอดgetVideoState()
ของConnectionRequest
ออบเจ็กต์
- แอปของคุณควรเรียกเมธอด
onCreateIncomingConnectionFailed(PhoneAccountHandle, ConnectionRequest)
ระบบย่อยโทรคมนาคมเรียกใช้เมธอดนี้เมื่อแอปของคุณเรียกใช้เมธอด
addNewIncomingCall(PhoneAccountHandle, Bundle)
เพื่อแจ้ง Telecom มีสายเรียกเข้าใหม่ แต่ไม่อนุญาตให้ใช้สายเรียกเข้า (สำหรับ โปรดดูข้อมูลที่หัวข้อข้อจำกัดในการโทร) แอปของคุณควร ปฏิเสธสายเรียกเข้าโดยไม่ส่งเสียง โดยคุณจะโพสต์การแจ้งเตือนเพื่อแจ้งข้อมูลได้ ผู้ใช้สายที่ไม่ได้รับ
ใช้การเชื่อมต่อ
แอปของคุณควรสร้างคลาสย่อยของ Connection
เพื่อ
แสดงถึงการโทรในแอปของคุณ คุณควรลบล้างเมธอดต่อไปนี้ใน
การใช้งานของคุณ:
onShowIncomingCallUi()
ระบบย่อยโทรคมนาคมจะเรียกวิธีนี้เมื่อคุณเพิ่มสายเรียกเข้าใหม่ และ แอปของคุณควรแสดง UI ของสายเรียกเข้า
onCallAudioStateChanged(CallAudioState)
ระบบย่อยโทรคมนาคมเรียกวิธีการนี้เพื่อแจ้งแอปของคุณว่าเสียงที่ มีการเปลี่ยนแปลงเส้นทางหรือโหมด ซึ่งเรียกว่าเพื่อตอบสนองต่อแอปของคุณที่เปลี่ยน โหมดเสียงโดยใช้
setAudioRoute(int)
อาจมีการเรียกวิธีการนี้ในกรณีที่ระบบเปลี่ยนเส้นทางเสียง (เช่น เมื่อชุดหูฟังบลูทูธยกเลิกการเชื่อมต่อ)onHold()
ระบบย่อยโทรคมนาคมเรียกใช้เมธอดนี้เมื่อต้องการพักสาย ในการตอบสนองต่อคำขอนี้ แอปของคุณควรพักสายแล้วเรียกใช้
setOnHold()
วิธีในการแจ้งให้ระบบทราบ ที่มีการระงับสายอยู่ ระบบย่อยโทรคมนาคมอาจเรียกใช้เมธอดนี้เมื่อ บริการระหว่างการโทร เช่น Android Auto ที่แสดงให้เห็นว่าการโทรต้องการ ส่งต่อคำขอของผู้ใช้ให้พักสาย ระบบย่อยโทรคมนาคมยังเรียก วิธีนี้ในกรณีที่ผู้ใช้เปิดใช้การโทรในแอปอื่น สำหรับข้อมูลเพิ่มเติม ข้อมูลเกี่ยวกับบริการในสาย โปรดดูInCallService
onUnhold()
ระบบย่อยโทรคมนาคมจะเรียกใช้เมธอดนี้เมื่อ อุปกรณ์ต้องการต่อสายที่พักสายอยู่ เมื่อแอปของคุณกลับมาทำงานอีกครั้งแล้ว ระบบควรเรียกใช้
setActive()
เพื่อแจ้งให้ระบบทราบว่าไม่มีการพักสายแล้ว โทรคมนาคม ระบบย่อยอาจเรียกใช้วิธีการนี้เมื่อบริการในสาย เช่น Android Auto ที่แสดงว่าสายของคุณต้องการส่งต่อคำขอเพื่อโทรต่อ สำหรับ ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการในสายได้ที่InCallService
onAnswer()
ระบบย่อยโทรคมนาคมเรียกเมธอดนี้เพื่อแจ้ง แอปของคุณที่ควรรับสายเรียกเข้า เมื่อแอปตอบคำถามแล้ว ระบบควรเรียกใช้
setActive()
เพื่อแจ้งระบบว่ามีการรับสายแล้ว โทรคมนาคม ระบบย่อยอาจเรียกวิธีการนี้เมื่อแอปของคุณเพิ่มสายเรียกเข้าใหม่และ มีสายที่สนทนาอยู่ในแอปอื่นอยู่แล้ว จึงไม่สามารถพักสายได้ ระบบย่อยโทรคมนาคมจะแสดง UI ของสายเรียกเข้าในนามของแอปของคุณใน อินสแตนซ์เหล่านี้ เฟรมเวิร์กมีวิธีการที่ทำงานมากเกินไปซึ่ง สนับสนุนเพื่อระบุสถานะวิดีโอที่จะรับสาย สำหรับข้อมูลเพิ่มเติม โปรดดูข้อมูลเพิ่มเติมที่onAnswer(int)
onReject()
ระบบย่อยโทรคมนาคมเรียกเมธอดนี้เมื่อต้องการปฏิเสธสายเรียกเข้า การโทร เมื่อแอปปฏิเสธการเรียก แอปควรเรียก
setDisconnected(DisconnectCause)
และระบุREJECTED
เป็นพารามิเตอร์ แอปของคุณควร จากนั้นเรียกใช้เมธอดdestroy()
เพื่อแจ้ง ระบบที่แอปประมวลผลการโทร การโทรของระบบย่อยโทรคมนาคม วิธีนี้เมื่อผู้ใช้ปฏิเสธสายเรียกเข้าจากแอปของคุณonDisconnect()
ระบบย่อยโทรคมนาคมเรียกวิธีนี้เมื่อต้องการยกเลิกการเชื่อมต่อสาย เมื่อการโทรสิ้นสุดลง แอปควรเรียกเมธอด
setDisconnected(DisconnectCause)
และระบุLOCAL
เป็นพารามิเตอร์เพื่อระบุว่า คำขอของผู้ใช้ทำให้การโทรถูกตัดการเชื่อมต่อ จากนั้นแอปของคุณควรเรียกเมธอดdestroy()
วิธีในการแจ้งให้โทรคมนาคม ระบบย่อยที่แอปได้ประมวลผลการเรียก ระบบอาจเรียกใช้เมธอดนี้ เมื่อผู้ใช้ตัดการเชื่อมต่อการโทรผ่านบริการอื่นในสาย เช่น Android Auto นอกจากนี้ ระบบจะเรียกวิธีการนี้เมื่อการเรียกของคุณต้อง ยกเลิกการเชื่อมต่อ เพื่อให้สามารถโทรออกได้ เช่น หากผู้ใช้ต้องการ เพื่อโทรฉุกเฉิน ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการระหว่างการโทรได้ที่InCallService
รับมือกับสถานการณ์การโทรที่พบบ่อย
การใช้ ConnectionService
API ในการโทร
ต้องมีการโต้ตอบกับชั้นเรียนอื่นๆ ใน android.telecom
ใหม่ ส่วนต่อไปนี้จะอธิบายสถานการณ์การโทรที่พบบ่อย และวิธี
ต้องใช้ API ในการจัดการ
รับสายเรียกเข้า
ขั้นตอนในการจัดการสายเรียกเข้าจะเปลี่ยนไปหรือไม่ว่ามีสายโทรเข้าในแอปอื่นๆ หรือไม่ หรือไม่ เหตุผลที่กระบวนการทำงานแตกต่างกันคือ กรอบการทำงานของโทรคมนาคม ต้องสร้างข้อจำกัดบางอย่างเมื่อมีการเรียกใช้ในแอปอื่นๆ ดูแลให้แอปการโทรทั้งหมดในอุปกรณ์มีสภาพแวดล้อมที่เสถียร สำหรับข้อมูลเพิ่มเติม โปรดดูข้อมูลที่หัวข้อข้อจำกัดในการโทร
ไม่มีสายที่ใช้งานอยู่ในแอปอื่นๆ
หากต้องการรับสายเรียกเข้าเมื่อไม่มีสายที่ใช้งานอยู่ในแอปอื่นๆ ให้ทําตาม ขั้นตอนเหล่านี้:
- แอปของคุณได้รับสายเรียกเข้าใหม่โดยใช้กลไกปกติ
- ใช้เมธอด
addNewIncomingCall(PhoneAccountHandle, Bundle)
เพื่อ แจ้งระบบย่อยโทรคมนาคมเกี่ยวกับสายเรียกเข้าใหม่ - ระบบย่อยโทรคมนาคมเชื่อมโยงกับการใช้งาน
ConnectionService
ของแอปและขออินสแตนซ์ใหม่ ของคลาสConnection
หมายถึงรายการเข้าใหม่ โดยใช้เมธอดonCreateIncomingConnection(PhoneAccountHandle, ConnectionRequest)
- ระบบย่อยโทรคมนาคมแจ้งให้แอปของคุณทราบว่าควรแสดงสายเรียกเข้า
อินเทอร์เฟซผู้ใช้โดยใช้เมธอด
onShowIncomingCallUi()
- แอปของคุณแสดง UI ที่เข้ามาใหม่โดยใช้การแจ้งเตือนที่มี
Intent แบบเต็มหน้าจอ ดูข้อมูลเพิ่มเติมได้ที่
onShowIncomingCallUi()
- เรียกใช้เมธอด
setActive()
หากผู้ใช้ รับสายเรียกเข้า หรือsetDisconnected(DisconnectCause)
ระบุREJECTED
เป็นพารามิเตอร์ตามด้วย ไปยังเมธอดdestroy()
หากผู้ใช้ ปฏิเสธสายเรียกเข้า
สายที่สนทนาอยู่ในแอปอื่นๆ ที่จะพักสายไม่ได้
เพื่อรับสายเรียกเข้าเมื่อมีสายที่สนทนาอยู่ในแอปอื่นๆ ซึ่งทำไม่ได้ ถูกระงับ โปรดทำตามขั้นตอนต่อไปนี้
- แอปของคุณได้รับสายเรียกเข้าใหม่โดยใช้กลไกปกติ
- ใช้เมธอด
addNewIncomingCall(PhoneAccountHandle, Bundle)
เพื่อ แจ้งระบบย่อยโทรคมนาคมเกี่ยวกับสายเรียกเข้าใหม่ - ระบบย่อยโทรคมนาคมเชื่อมโยงกับการใช้งาน
ConnectionService
ของแอปและขออินสแตนซ์ใหม่ ของออบเจ็กต์Connection
ที่แสดงถึง สายเรียกเข้าโดยใช้เมธอดonCreateIncomingConnection(PhoneAccountHandle, ConnectionRequest)
- ระบบย่อยโทรคมนาคมจะแสดง UI ของสายเรียกเข้าสำหรับสายเรียกเข้าของคุณ
- หากผู้ใช้รับสาย ระบบย่อยโทรคมนาคมจะเรียกใช้เมธอด
onAnswer()
คุณควรเรียกใช้เมธอดsetActive()
เพื่อระบุไปยังโทรคมนาคม ระบบย่อยที่เชื่อมต่อการโทรแล้ว - หากผู้ใช้ปฏิเสธสาย ระบบย่อยโทรคมนาคมจะเรียกใช้เมธอด
onReject()
คุณควรเรียกเมธอดsetDisconnected(DisconnectCause)
โดยระบุREJECTED
เป็นพารามิเตอร์ ตามด้วย ไปยังเมธอดdestroy()
โทรออก
ขั้นตอนการโทรออกจะต้องมีการจัดการกับความเป็นไปได้ที่ ไม่สามารถโทรออกได้เนื่องจากข้อจำกัดที่กำหนดโดยเฟรมเวิร์กโทรคมนาคม ดูข้อมูลเพิ่มเติมได้ที่ข้อจำกัดในการโทร
หากต้องการโทรออก ให้ทำตามขั้นตอนต่อไปนี้
- ผู้ใช้เริ่มโทรออกภายในแอปของคุณ
- ใช้เมธอด
placeCall(Uri, Bundle)
เพื่อแจ้ง ระบบย่อยเกี่ยวกับสายโทรออกใหม่ ข้อต่อไปนี้ ข้อควรพิจารณาสำหรับพารามิเตอร์เมธอด- พารามิเตอร์
Uri
แสดงที่อยู่ที่มี กำลังโทรหา สำหรับหมายเลขโทรศัพท์ปกติ ให้ใช้ URItel:
สคีม - พารามิเตอร์
Bundle
ช่วยให้คุณระบุข้อมูล เกี่ยวกับแอปการโทรโดยเพิ่มออบเจ็กต์PhoneAccountHandle
ของแอปในส่วนเพิ่มเติมEXTRA_PHONE_ACCOUNT_HANDLE
บัญชี แอปต้องระบุออบเจ็กต์PhoneAccountHandle
ให้กับสายโทรออกทุกสาย - พารามิเตอร์
Bundle
ยังให้คุณระบุได้ด้วยว่า สายที่โทรออกมีวิดีโอด้วยการระบุค่าSTATE_BIDIRECTIONAL
ในส่วนที่เกินมาEXTRA_START_CALL_WITH_VIDEO_STATE
พิจารณาว่าโดยค่าเริ่มต้น ระบบย่อยโทรคมนาคมจะกำหนดเส้นทางวิดีโอไปยัง ลำโพง
- พารามิเตอร์
- ระบบย่อยโทรคมนาคมเชื่อมโยงกับ
ConnectionService
ของแอป การใช้งานของคุณ - หากแอปของคุณโทรออกไม่ได้ การโทรของระบบย่อยโทรคมนาคม
เมธอด
onCreateOutgoingConnectionFailed(PhoneAccountHandle, ConnectionRequest)
เพื่อ แจ้งแอปของคุณว่าไม่สามารถโทรออกได้ในขณะนี้ แอปของคุณ ควรแจ้งให้ผู้ใช้ทราบว่าไม่สามารถโทรออกได้ - หากแอปของคุณโทรออกได้ ระบบย่อยของระบบโทรคมนาคม
onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest)
แอปควรแสดงผลอินสแตนซ์ของคลาสConnection
เพื่อแสดงถึงสายโทรออกใหม่ สำหรับ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ที่คุณควรตั้งค่าในการเชื่อมต่อ ดูใช้บริการเชื่อมต่อ - เมื่อเชื่อมต่อสายโทรออกแล้ว ให้โทรหาเมธอด
setActive()
เพื่อแจ้งระบบย่อยของโทรคมนาคม การโทรทำงานอยู่
วางสาย
หากต้องการวางสาย ให้ทำตามขั้นตอนต่อไปนี้
- เรียก
setDisconnected(DisconnectCause)
ที่ส่งLOCAL
เป็นพารามิเตอร์หากผู้ใช้ วางสาย หรือส่งREMOTE
เป็นพารามิเตอร์หากคู่สนทนาสิ้นสุดการโทร - เรียกใช้เมธอด
destroy()
ข้อจำกัดในการโทร
เพื่อให้ผู้ใช้ของคุณได้รับประสบการณ์การโทรที่เรียบง่ายและสอดคล้องกัน โทรคมนาคม
จะมีการบังคับใช้ข้อจำกัดบางประการสำหรับการจัดการการโทรในอุปกรณ์ สำหรับ
เช่น ผู้ใช้ได้ติดตั้งแอปการโทร 2 แอป
ConnectionService
API ที่จัดการด้วยตนเอง, FooTalk และ
BarTalk ในกรณีนี้ มีข้อจำกัดต่อไปนี้
สำหรับอุปกรณ์ที่ใช้ API ระดับ 27 หรือต่ำกว่า จะมีเพียงแอปเดียวที่สามารถรักษา การโทรที่ดำเนินอยู่ในช่วงเวลาใดเวลาหนึ่ง ข้อจำกัดนี้หมายความว่าในขณะที่ผู้ใช้มี การโทรที่ดำเนินอยู่โดยใช้แอป FooTalk แอป BarTalk ไม่สามารถเริ่มต้นหรือรับสายได้ การโทรใหม่
ในอุปกรณ์ที่ใช้ API ระดับ 28 ขึ้นไป หากทั้ง FooTalk และ BarTalk ประกาศ
CAPABILITY_SUPPORT_HOLD
และCAPABILITY_HOLD
ผู้ใช้จะสามารถโทรออกได้มากกว่า 1 สายโดย สลับไปมาระหว่างแอปเพื่อเริ่มต้นหรือรับสายอื่นหากผู้ใช้มีส่วนร่วมในการโทรที่มีการจัดการตามปกติ (เช่น การใช้ แอปโทรศัพท์หรือแอปโทรศัพท์ในตัว) ผู้ใช้จะต้องไม่อยู่ในสายที่มาจาก แอปการโทร ซึ่งหมายความว่าหากผู้ใช้อยู่ในสายปกติโดยใช้ ผู้ให้บริการเครือข่ายมือถือก็ไม่สามารถเข้าร่วม FooTalk หรือ BarTalk พร้อมกันได้ด้วยเช่นกัน
ระบบย่อยโทรคมนาคมจะตัดการเชื่อมต่อการโทรของแอปหากผู้ใช้กดหมายเลข โทรฉุกเฉิน
แอปของคุณจะไม่สามารถรับหรือโทรออกได้ในขณะที่ผู้ใช้อยู่ในสายฉุกเฉิน
หากมีสายที่สนทนาอยู่ในแอปการโทรอื่นเมื่อแอปรับสาย สายเรียกเข้า การรับสายเรียกเข้าจะวางสายที่สนทนาอยู่ แอปอื่น แอปของคุณไม่ควรแสดงอินเทอร์เฟซผู้ใช้สายเรียกเข้าตามปกติ เฟรมเวิร์กโทรคมนาคมจะแสดงอินเทอร์เฟซผู้ใช้เมื่อมีสายเรียกเข้า และแจ้งข้อมูล ผู้ใช้ที่รับสายใหม่จะวางสายที่สนทนาอยู่ ช่วงเวลานี้ หมายความว่าหากผู้ใช้อยู่ในสาย FooTalk และแอป BarTalk ได้รับ โครงสร้างโทรคมนาคมจะแจ้งให้ผู้ใช้ทราบว่ามี สายเรียกเข้าจาก BarTalk และการรับสาย BarTalk จะเป็นการวางสาย FooTalk โทร