Risposte:
Due modi per raggiungerlo.
1) È necessario avviare il dialer tramite codice, senza l'interazione dell'utente.
È necessario Action_Dial
,
usa sotto il codice si aprirà Dialer con il numero specificato
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
È richiesto il prefisso "tel:" , altrimenti verrà generata la seguente eccezione: java.lang.IllegalStateException: impossibile eseguire il metodo dell'attività.
Action_Dial non richiede alcuna autorizzazione.
Se si desidera avviare la chiamata direttamente senza l'interazione dell'utente , è possibile utilizzare l'azione Intent.ACTION_CALL
. In questo caso, è necessario aggiungere la seguente autorizzazione in AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) È necessario che l'utente faccia clic sulla stringa Phone_Number e inizi la chiamata.
android:autoLink="phone"
È necessario utilizzare TextView con la proprietà di seguito.
android: autoLink = "phone" android: linksClickable = "true" una proprietà textView
Non è necessario utilizzare l'intento o ottenere l'autorizzazione in questo modo.
Abbastanza tardi sulla risposta, ma se si dispone di un numero in TextView
cui si sta mostrando il numero di telefono, quindi non è necessario gestire gli intenti, è possibile utilizzare solo l'attributo XML android:autoLink="phone"
e il sistema operativo avvierà automaticamente un ACTION_DIAL
Intento.
Come @ashishduh menzionato sopra, usando android:autoLink="phone
è una buona soluzione. Ma questa opzione ha uno svantaggio, non funziona con tutte le lunghezze dei numeri di telefono. Ad esempio, un numero di telefono di 11 numeri non funzionerà con questa opzione. La soluzione è quella di aggiungere un prefisso ai numeri di telefono con il prefisso internazionale.
Esempio:
08034448845
non funzionerà
ma lo +2348034448845
farà
<TextView
android:id="@+id/phoneNumber"
android:autoLink="phone"
android:linksClickable="true"
android:text="+91 22 2222 2222"
/>
Ecco come è possibile aprire direttamente l'etichetta EditText assegnata al numero sul dialer.
Aggiungi l'autorizzazione in manifest:
<uses-permission android:name="android.permission.CALL_PHONE" />
Pulsante Crea o qualsiasi esempio di widget: 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);
}
});