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


193

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

답변:


532

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

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 속성

이러한 방식으로 의도를 사용하거나 허가를받을 필요가 없습니다.


9
그것은 훌륭하고 그것은 즉시 호출하지 않는다는 점에서 Intent.ACTION_CALL과 다릅니다
Amt87

ACTION_DIAL에 권한이 필요합니까? 아니면 ACCESS_CALL에만 권한이 있습니까?
Marc Plano-Lesay 2013 년

1
이것은 덴마크의 전화 번호에서도 작동 합니다. :) 번호 앞에 +45를 추가 하지 않아도 됩니다. 전화 번호를 파싱하는 것만으로도 잘 작동합니다
ymerdrengene

1
새로운 의도로 다이얼러를 연 후 뒤로 버튼에 문제가 있습니다. 3 뒤로 버튼을 눌러 응용 프로그램으로 돌아갈 수 있습니다 (열리지 않은 다이얼러의 여러 화면이 표시됩니다-다이얼러 자체, 새 연락처 화면 만들기, 즐겨 찾기). 누군가 한 번의 뒤로 버튼 누름으로 앱으로 돌아가는 방법을 알고 있습니까?
kashlo

2
2012 년 ... 좋은 옛날. 정치적으로 올바른 2018 년 대기업은 사용자 데이터를 판매하며 앱은 SMS 및 전화 통화를 지원하지 않기 위해 Android 관료주의를 처리해야합니다.
Josh

52

답변이 늦었지만 TextView전화 번호를 표시하는 경우 인 텐트를 처리 할 필요가 없으면 XML 속성 만 사용 android:autoLink="phone"하면 OS가 자동으로 인 ACTION_DIAL텐트를 시작합니다 .


매우 빠른 접근!
Taslim Oseni

7

자,이 질문에 대한 답은 늦게 될 것입니다. 그러나 Kotlin 에서 수행하고 싶은 샘플은 다음과 같습니다 .

val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)

누군가에게 도움이 될 것이라고 생각했습니다.


2

@ashishduh가 위에서 언급했듯이 사용 android:autoLink="phone하는 것도 좋은 해결책입니다. 그러나이 옵션에는 한 가지 단점이 있으며 모든 전화 번호 길이에서 작동하지는 않습니다. 예를 들어, 전화 번호 11의 전화 번호는이 옵션에서 작동하지 않습니다. 해결책은 전화 번호 앞에 국가 코드를 붙이는 것입니다.

예:

08034448845 작동하지 않습니다

하지만 +2348034448845의지


1
<TextView
 android:id="@+id/phoneNumber"
 android:autoLink="phone"
 android:linksClickable="true"
 android:text="+91 22 2222 2222"
 />

다이얼러에서 EditText 레이블 할당 번호를 직접 여는 방법입니다.


1

매니페스트에 권한 추가 :

<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);

    }
});

이 답변은 정확하지만이 답변은 질문과 일치하지 않습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.