Czy mogę zadzwonić z HTML na Androida?

84

Aby nawiązać połączenie telefonu za pomocą kodu HTML na iPhone utworzyć <A/>etykietę z href sformatowany jako: <a href='tel:123-555-1212'>Dial Me</a>.

Czy istnieje odpowiednik języka HTML na Androida?

WYJAŚNIENIE - użycie formatu href = 'tele: 123-555-1212' rzeczywiście działa na Androidzie. Testowałem aplikację w natywnym opakowaniu Java na urządzeniu. Nie wygląda na to, że możemy wykonać wywołanie z aplikacji internetowej hostowanej w Native Wrapper.

Kevin
źródło

Odpowiedzi:

128

Tak, możesz; działa też na Androidzie :

tel: phone_number
Wywołuje wprowadzony numer telefonu. Akceptowane są prawidłowe numery telefonów określone w dokumencie IETF RFC 3966. Prawidłowe przykłady obejmują:

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

Przeglądarka systemu Android używa aplikacji Telefon do obsługi schematu „tel”, zgodnie z definicją zawartą w dokumencie RFC 3966.
Kliknięcie łącza takiego jak:

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

w systemie Android uruchomi aplikację Telefon i wstępnie wprowadzi cyfry numeru 2125551212 bez automatycznego wybierania numeru.

Spójrz na RFC3966

systempuntoout
źródło
po kliknięciu łącza iPhone automatycznie nawiązuje połączenie (automatyczne wybieranie numeru)? czy jest jak Android? (otwórz dialer i musisz nacisnąć przycisk połączenia).
Enrique
7
Upewnij się, że masz to: <używa-pozwolenia android: name = "android.permission.CALL_PHONE" /> w swoim Manifest.xml
jasonflaherty
25

Właśnie napisałem aplikację, która może dzwonić ze strony internetowej - nie wiem, czy to ci się przyda, ale i tak podaję:

w swoim onCreate będziesz musiał użyć widoku internetowego i przypisać WebViewClient, jak poniżej:

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

następnie obsłuż kliknięcie numeru telefonu w ten sposób:

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

Daj mi znać, jeśli potrzebujesz więcej wskazówek.

Martyn
źródło
1
Dzięki - tak, to dobre podejście! Skończyło się na dodaniu dostępu do mojej aplikacji z JavaScript w / addJavascriptInterface
Kevin
21

Generalnie na Androidzie, jeśli po prostu wyświetlisz numer telefonu, a użytkownik go stuknie, pojawi się w dialerze. Możesz więc po prostu zrobić

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

Gdy użytkownik stuknie pogrubioną część, ponieważ jest sformatowana jak numer telefonu, dialer wyskoczy i pokaże się 4165551234w polu numeru telefonu. Użytkownik musi wtedy po prostu nacisnąć przycisk połączenia.

Możesz to zrobić

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

aby objąć oba urządzenia, ale nie jestem pewien, jak dobrze to zadziała. Spróbuję wkrótce i dam znać.

EDYCJA: Właśnie spróbowałem na moim HTC Magic z zakorzenionym Rogersem 1.5 z 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>

Pierwsza, otoczona linkiem i wydrukowanie numeru telefonu, działała idealnie. Podciągnąłem dialer z myślnikami i wszystkim. Drugi, mówiąc our numberz linkiem, działał dokładnie tak samo. Oznacza to, że używanie <a href='tel:xxx-xxx-xxxx'>powinno działać na wszystkich płaszczyznach, ale nie sugerowałbym traktowania mojego jednego testu jako rozstrzygającego.

Łączenie bezpośrednio z numerem spełniło oczekiwane: próbowałem pobrać nieistniejący plik z serwera.

Ten ostatni zrobił tak, jak wspomniałem powyżej i podciągnął dialer, ale bez ładnych myślników formatujących.

Tarka
źródło