ฉันไม่จำเป็นต้องโทรไปที่หมายเลขโทรศัพท์ฉันแค่ต้องการให้ผู้โทรเข้าเปิดขึ้นมาพร้อมกับหมายเลขโทรศัพท์ที่แสดงอยู่แล้ว Intent
ฉันควรใช้อะไรเพื่อให้บรรลุสิ่งนี้
ฉันไม่จำเป็นต้องโทรไปที่หมายเลขโทรศัพท์ฉันแค่ต้องการให้ผู้โทรเข้าเปิดขึ้นมาพร้อมกับหมายเลขโทรศัพท์ที่แสดงอยู่แล้ว Intent
ฉันควรใช้อะไรเพื่อให้บรรลุสิ่งนี้
คำตอบ:
สองวิธีในการบรรลุเป้าหมาย
1) ต้องเริ่มการหมุนหมายเลขผ่านรหัสโดยไม่ต้องมีการโต้ตอบกับผู้ใช้
คุณต้องAction_Dial
,
ใช้รหัสด้านล่างมันจะเปิด Dialer ด้วยหมายเลขที่ระบุ
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
ต้องการคำนำหน้า 'tel:'นอกจากนี้จะมีการโยนข้อยกเว้นต่อไปนี้: java.lang.IllegalStateException: ไม่สามารถเรียกใช้วิธีการของกิจกรรมได้
Action_Dial ไม่ต้องการการอนุญาตใด ๆ
หากคุณต้องการที่จะเริ่มต้นการโทรโดยตรงโดยไม่ต้องโต้ตอบกับผู้ใช้ของIntent.ACTION_CALL
คุณสามารถใช้การดำเนินการ ในกรณีนี้คุณต้องเพิ่มการอนุญาตต่อไปนี้ใน AndroidManifest.xml ของคุณ:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) ต้องการให้ผู้ใช้คลิกที่สตริง Phone_Number และเริ่มการโทร
android:autoLink="phone"
คุณต้องใช้ TextView ด้วยคุณสมบัติด้านล่าง
android: autoLink = "โทรศัพท์" android: linksClickable = "true" คุณสมบัติ textView
คุณไม่จำเป็นต้องใช้ความตั้งใจหรือได้รับอนุญาตผ่านวิธีนี้
แต่ถ้าคุณมีTextView
หมายเลขโทรศัพท์ที่แสดงอยู่คุณก็ไม่จำเป็นต้องจัดการกับ intents เลยคุณสามารถใช้แอตทริบิวต์ XML android:autoLink="phone"
และระบบปฏิบัติการจะเริ่มต้นการACTION_DIAL
แสดงเจตนาโดยอัตโนมัติ
ตกลงมันจะเป็นคำตอบที่ช้ามากสำหรับคำถามนี้ แต่นี่เป็นเพียงหนึ่งตัวอย่างถ้าคุณต้องการที่จะทำมันในKotlin
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)
คิดว่าอาจช่วยใครซักคน
@ashishduh ที่กล่าวถึงข้างต้นการใช้งานandroid:autoLink="phone
ก็เป็นวิธีที่ดีเช่นกัน แต่ตัวเลือกนี้มาพร้อมกับข้อเสียเปรียบอย่างใดอย่างหนึ่งมันไม่สามารถใช้ได้กับความยาวหมายเลขโทรศัพท์ทั้งหมด ตัวอย่างเช่นหมายเลขโทรศัพท์ 11 หมายเลขจะใช้ไม่ได้กับตัวเลือกนี้ วิธีแก้ปัญหาคือนำหน้าหมายเลขโทรศัพท์ของคุณด้วยรหัสประเทศ
ตัวอย่าง:
08034448845
จะไม่ทำงาน
แต่+2348034448845
จะ
<TextView
android:id="@+id/phoneNumber"
android:autoLink="phone"
android:linksClickable="true"
android:text="+91 22 2222 2222"
/>
นี่คือวิธีที่คุณสามารถเปิดหมายเลขกำหนดป้ายกำกับ EditText บนตัวหมุนหมายเลขโดยตรง
เพิ่มสิทธิ์ในรายการ:
<uses-permission android:name="android.permission.CALL_PHONE" />
สร้างปุ่มหรือตัวอย่างวิดเจ็ต: btnCall
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel: +98990*******");
startActivity(callIntent);
}
});