답변:
그것을 달성하는 두 가지 방법.
1) 사용자 개입없이 코드를 통해 다이얼러를 시작해야합니다.
당신이 필요합니다 Action_Dial
,
아래 코드를 사용하면 지정된 번호로 다이얼러가 열립니다.
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
'tel :' 접 두부가 필요합니다 . 그렇지 않으면 다음 예외가 발생합니다. java.lang.IllegalStateException : 활동의 메소드를 실행할 수 없습니다.
Action_Dial에는 권한이 필요하지 않습니다.
사용자의 상호 작용없이 직접 통화를 시작하려는 경우 action을 사용할 수 있습니다 Intent.ACTION_CALL
. 이 경우 AndroidManifest.xml에 다음 권한을 추가해야합니다.
<uses-permission android:name="android.permission.CALL_PHONE" />
2) 사용자가 Phone_Number 문자열을 클릭하고 통화를 시작해야합니다.
android:autoLink="phone"
아래 속성과 함께 TextView를 사용해야합니다.
android : autoLink = "phone"android : linksClickable = "true"textView 속성
이러한 방식으로 의도를 사용하거나 허가를받을 필요가 없습니다.
답변이 늦었지만 TextView
전화 번호를 표시하는 경우 인 텐트를 처리 할 필요가 없으면 XML 속성 만 사용 android:autoLink="phone"
하면 OS가 자동으로 인 ACTION_DIAL
텐트를 시작합니다 .
@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);
}
});