Posso fare una telefonata da HTML su Android?


84

Per effettuare una chiamata tramite HTML su un iPhone ho creare un <A/>tag con un href formattato come: <a href='tel:123-555-1212'>Dial Me</a>.

Esiste un equivalente per HTML su Android?

CHIARIMENTO: l'utilizzo del formato href = 'tele: 123-555-1212' funziona effettivamente su Android. Stavo testando l'app all'interno di un wrapper Java nativo sul dispositivo. Non sembra che sia possibile effettuare una chiamata da un'applicazione Web ospitata in un wrapper nativo.

Risposte:


128

Si, puoi; funziona anche su Android :

tel: phone_number
Chiama il numero di telefono inserito. Sono accettati numeri di telefono validi come definiti in IETF RFC 3966. Esempi validi includono quanto segue:

* tel:2125551212
* tel: (212) 555 1212

Il browser Android utilizza l'app Telefono per gestire lo schema "tel", come definito da RFC 3966.
Facendo clic su un collegamento come:

<a href="tel:2125551212">2125551212</a>

su Android si aprirà l'app Telefono e preinserirà le cifre per 2125551212 senza composizione automatica.

Dai un'occhiata a RFC3966


quando si fa clic sul collegamento, l'iPhone inizia la chiamata automaticamente (composizione automatica)? o è come Android? (apri il dialer e devi premere il pulsante di chiamata).
Enrique

7
Assicurati di avere questo: <uses-permission android: name = "android.permission.CALL_PHONE" /> nel tuo Manifest.xml
jasonflaherty

25

Ho appena scritto un'app che può effettuare una chiamata da una pagina web - non so se ti è utile, ma includo comunque:

nel tuo onCreate dovrai usare una webview e assegnare un WebViewClient, come di seguito:

browser = (WebView) findViewById(R.id.webkit);
browser.setWebViewClient(new InternalWebViewClient());

quindi gestisci il clic su un numero di telefono come questo:

private class InternalWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
         if (url.indexOf("tel:") > -1) {
            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
}

Fammi sapere se hai bisogno di altri suggerimenti.


1
Grazie, sì, è un buon approccio! Ho finito per aggiungere l'accesso alla mia app da JavaScript con addJavascriptInterface
Kevin,

21

Generalmente su Android, se visualizzi semplicemente il numero di telefono e l'utente lo tocca, lo visualizzerà nel dialer. Quindi, potresti semplicemente farlo

For more information, call us at <b>416-555-1234</b>

Quando l'utente tocca la parte in grassetto, poiché è formattata come un numero di telefono, viene visualizzato il dialer e viene visualizzato 4165551234nel campo del numero di telefono. L'utente deve quindi solo premere il pulsante di chiamata.

Potresti essere in grado di farlo

For more information, call us at <a href='tel:416-555-1234'>416-555-1234</a>

per coprire entrambi i dispositivi, ma non sono sicuro di come funzionerebbe. Proverò a breve e ti farò sapere.

EDIT: Ho appena provato sul mio HTC Magic con Rogers 1.5 con root con SenseUI:

For more information, call us at <a href='tel:416-555-1234'>416-555-1234</a><br />
<br />
Call at <a href='tel:416-555-1234'>our number</a>
<br />
<br />
<a href='416-555-1234'>Blah</a>
<br />
<br />
For more info, call <b>416-555-1234</b>

Il primo, circondato dal link e stampando il numero di telefono, ha funzionato perfettamente. Ho tirato su il dialer con i trattini e tutto il resto. Il secondo, dicendo our numbercon il collegamento, ha funzionato esattamente allo stesso modo. Ciò significa che l'utilizzo <a href='tel:xxx-xxx-xxxx'>dovrebbe funzionare su tutta la linea, ma non suggerirei di considerare conclusivo il mio unico test.

Il collegamento diretto al numero ha fatto il previsto: ho cercato di estrarre il file inesistente dal server.

L'ultimo ha fatto come ho detto sopra e ha tirato su il dialer, ma senza i bei trattini di formattazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.