Câu trả lời:
Hai cách để đạt được nó.
1) Cần khởi động trình quay số qua mã, không có sự tương tác của người dùng.
Bạn cần Action_Dial
,
sử dụng mã bên dưới, nó sẽ mở Trình quay số với số được chỉ định
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
Tiền tố 'tel:' là bắt buộc , ngoại trừ trường hợp ngoại lệ sau sẽ bị ném: java.lang.IllegalStateException: Không thể thực thi phương thức của hoạt động.
Action_Dial không yêu cầu bất kỳ sự cho phép.
Nếu bạn muốn bắt đầu cuộc gọi trực tiếp mà không cần tương tác của người dùng , Bạn có thể sử dụng hành động Intent.ACTION_CALL
. Trong trường hợp này, bạn phải thêm quyền sau trong AndroidManifest.xml của mình:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) Cần người dùng nhấp vào chuỗi Phone_Number và bắt đầu cuộc gọi.
android:autoLink="phone"
Bạn cần sử dụng TextView với thuộc tính bên dưới.
android: autoLink = "phone" android: linksClickable = "true" một thuộc tính textView
Bạn không cần phải sử dụng ý định hoặc để có được sự cho phép thông qua cách này.
Câu trả lời khá muộn, nhưng nếu bạn có TextView
số điện thoại đang hiển thị, thì bạn không cần phải xử lý ý định nào cả, bạn chỉ cần sử dụng thuộc tính XML android:autoLink="phone"
và HĐH sẽ tự động khởi tạo ACTION_DIAL
Ý định.
Như @ashishduh đã đề cập ở trên, sử dụng android:autoLink="phone
cũng là một giải pháp tốt. Nhưng tùy chọn này đi kèm với một nhược điểm, nó không hoạt động với tất cả độ dài số điện thoại. Chẳng hạn, số điện thoại gồm 11 số sẽ không hoạt động với tùy chọn này. Giải pháp là tiền tố số điện thoại của bạn với mã quốc gia.
Thí dụ:
08034448845
sẽ không làm việc
nhưng +2348034448845
sẽ
<TextView
android:id="@+id/phoneNumber"
android:autoLink="phone"
android:linksClickable="true"
android:text="+91 22 2222 2222"
/>
Đây là cách bạn có thể mở nhãn EditText được gán số trực tiếp trên trình quay số.
Thêm quyền trong tệp kê khai:
<uses-permission android:name="android.permission.CALL_PHONE" />
Tạo nút hoặc bất kỳ ví dụ widget nào: 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);
}
});