전화 번호가 표시된 상태에서 다이얼러를 열려면 어떻게합니까? 전화 번호로

전화 번호로 전화를 걸 필요가 없으며 이미 표시된 전화 번호로 전화 걸기 만하면됩니다. Intent이것을 달성하기 위해 무엇을 사용해야합니까?



답변

그것을 달성하는 두 가지 방법.

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텐트를 시작합니다 .


답변

자,이 질문에 대한 답은 늦게 될 것입니다. 그러나 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);

    }
});