How do I dial a mobile phone via the international trunk?

Guide til Internationale Mobilopkald og App-Links

16/02/2025

Rating: 4.69 (11621 votes)

I en stadig mere forbundet verden er det essentielt at forstå, hvordan man navigerer i kompleksiteten af international mobiltelefoni og interaktionen mellem mobilapplikationer og telefonfunktioner. Uanset om du ringer til familie i udlandet eller udvikler en app, der skal håndtere telefonnumre, er der specifikke regler og bedste praksisser, der skal følges. Denne artikel dykker ned i de vigtigste aspekter af international opkald og løser et almindeligt problem med håndtering af tel:-links i Android WebView-applikationer.

Does Tel-links work if a phone call is not found?
Yes... everything else is functioning normally except for the tel: links. And even those work, it is just that when you are dont with your phone call and go back to the app it is sitting on a page that says not found.

At foretage et internationalt opkald kan virke ligetil, men det kræver en forståelse af de forskellige præfikser og koder, der er involveret. Ligeledes kan udvikling af mobilapplikationer, der sømløst integrerer sig med telefonens indbyggede funktioner, være en udfordring. Vi vil udforske begge scenarier for at give dig en omfattende guide til at mestre mobilkommunikation på tværs af grænser og i dine egne apps.

Indholdsfortegnelse

Forståelse af Internationale Mobilopkald

Når du foretager et telefonopkald, uanset om det er nationalt eller internationalt, følger nummeret en bestemt struktur. Denne struktur inkluderer ofte et stamme præfiks, et områdenummer og selve abonnentnummeret. Forskellen opstår, når du skifter fra nationale opkald til internationale opkald, hvor stamme præfikset skal erstattes med en international opkaldskode.

Nationale Opkald vs. Internationale Opkald

Lad os først se på, hvordan et telefonnummer typisk er struktureret inden for et land. For eksempel, i Australien, når du ringer til et fastnetnummer, ville du typisk taste:

  • 0 – stamme præfiks (trunk prefix)
  • 2 – områdenummer for New South Wales
  • 6555 – STD-kode for en specifik telefoncentral
  • 1234 – telefoncentralens specifikke udvidelse

For et mobiltelefonnummer i Australien ændrer strukturen sig en smule, men stamme præfikset er stadig til stede:

  • 0 – stamme præfiks
  • 4 – områdenummer for mobiltelefoner
  • 1234 5678 – mobiltelefonnummer

Når du nu vil ringe via den internationale stamme, skal du fjerne det nationale stamme præfiks og erstatte det med det internationale opkaldspræfiks. Den universelle standard for at angive et internationalt opkald er et plustegn (+), efterfulgt af landekoden. Dette plustegn er en forkortelse for den internationale adgangskode, som ofte er 00 i mange lande, herunder Danmark, men kan variere (f.eks. 011 i Nordamerika).

Så for at ringe til det australske mobilnummer internationalt, ville du taste:

  • + – forkortelse for den internationale stammenummer (erstatter den nationale stamme præfiks '0')
  • 61 – landekode for Australien
  • 4 – områdenummer for en mobiltelefon
  • 1234 5678 – mobiltelefonnummer

Dette er grunden til, at du ofte vil opleve, at det første ciffer i et telefonnummer (det nationale stamme præfiks) udelades, når du ringer internationalt. Dette gælder selv når du bruger international præfiks til at ringe inden for samme land, hvilket dog sjældent er relevant i praksis, da det kun er aktuelt for udlandsdanskere med et dansk nummer, der ringer hjem til Danmark, og som vil spare penge ved at bruge den internationale opkaldskode.

Eksempler og Generelle Regler for Internationale Opkald

At mestre internationale opkald kræver, at man husker at erstatte det lokale stamme præfiks med den internationale adgangskode og den korrekte landekode. Lad os tage Tyskland som et eksempel. Hvis et tysk nationalt mobilnummer er 0170 1234567, og du vil ringe til det fra udlandet, skal du fjerne det nationale stamme præfiks '0' og tilføje '+49' for Tysklands internationale landekode, hvilket giver:

+49 170 1234567

Her er en simpel sammenligning:

OpkaldstypeStrukturEksempel (Australien)
Nationalt (fastnet)Stamme præfiks + Områdenummer + Lokalt nummer02 6555 1234
Nationalt (mobil)Stamme præfiks + Områdenummer (mobil) + Mobilnummer04 1234 5678
Internationalt (mobil)International adgangskode (+) + Landekode + Mobilnummer (uden national stamme præfiks)+61 4 1234 5678

Det er vigtigt at bemærke, at plustegnet (+) er den mest bekvemme og universelle måde at ringe internationalt på fra en mobiltelefon, da telefonen selv oversætter det til den korrekte internationale adgangskode for det land, du befinder dig i. Dette eliminerer behovet for at huske specifikke adgangskoder som '00', '011' osv.

Vigtige Overvejelser ved Internationale Opkald

Udover selve nummerstrukturen er der flere andre faktorer, der spiller ind, når man foretager internationale opkald:

  • Tidszoner: Vær opmærksom på tidsforskellen mellem din placering og den destination, du ringer til, for at undgå at ringe på ubelejlige tidspunkter.
  • Omkostninger: Internationale opkald kan være dyre. Tjek altid din mobiludbyders takster for internationale opkald eller overvej VoIP-tjenester som WhatsApp, Skype eller FaceTime, der ofte tilbyder gratis eller billigere opkald via internettet.
  • Landekoder: Sørg for at have den korrekte landekode. En hurtig søgning online kan hjælpe, hvis du er usikker.
  • Mobil vs. Fastnet: Nogle lande har forskellige områdenumre eller forudindstillinger for mobil- og fastnetnumre. Sørg for at bruge den koradte, der er relevant for det nummer, du ringer til.
  • Nummerformat: Nogle lande har faste antal cifre i deres telefonnumre, mens andre kan variere. At kende det forventede format kan hjælpe med at undgå fejl.

Ved at følge disse retningslinjer kan du sikre, at dine internationale opkald går glat og uden unødvendige komplikationer.

Håndtering af Tel-Links i Android WebView

Nu skifter vi fokus til app-udvikling, specifikt håndtering af tel:-links i Android WebView. En WebView er en komponent, der giver Android-apps mulighed for at vise webindhold. Det er i bund og grund en indbygget browser. Problemet opstår, når en app forsøger at åbne et tel:-link (som er designet til at starte et telefonopkald) og samtidig forsøger at behandle det som en webadresse, hvilket fører til en 'Webside ikke fundet'-fejl.

Problemet med 'Webside ikke fundet'

Den beskrevne situation er meget almindelig: En Android WebView-app åbner et tel:-link, telefonen starter et opkald, men når brugeren vender tilbage til appen efter opkaldet, vises en 'Webside ikke fundet tel:0000000000'-side. Dette skyldes, at WebView forsøger at navigere til tel:-URL'en, selv efter at intentet er sendt til telefonens opkaldsapp.

How do I dial a mobile phone via the international trunk?
For a mobile phone this becomes 0 - trunk prefix 4 - Area code for a mobile telephone Now, when I want to dial via the international trunk, you need to drop the trunk prefix and replace it with the international dialing prefix + - Short hand for the country trunk number 61 - Country code for Australia 4 - Area code for a mobile telephone

Den kode, der blev præsenteret for at håndtere tel: og mailto: links, ser således ud:

public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:") || url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
}
view.loadUrl(url); // <-- Denne linje er problemet
return true;
}

Problemet ligger i linjen view.loadUrl(url);. Når url.startsWith("tel:") er sandt, opretter koden korrekt et Intent for at starte telefonopkaldet (eller e-mail-klienten for mailto:). Derefter kaldes startActivity(intent);, som instruerer operativsystemet til at åbne den relevante app (telefon-app, e-mail-app). Men umiddelbart derefter, uanset om URL'en var en tel: eller mailto:, kaldes view.loadUrl(url);. Dette beder WebView om at forsøge at indlæse den samme tel: eller mailto: URL som en webside, hvilket naturligvis mislykkes, da det ikke er en gyldig webadresse, og resulterer i 'Webside ikke fundet'.

Løsningen: Korrekt Overstyring af URL-indlæsning

For at løse dette problem skal du forhindre WebView i at forsøge at indlæse URL'en, når den allerede er blevet håndteret af et Intent. Du skal kun kalde view.loadUrl(url);, hvis URL'en ikke er en mailto: eller tel: link, eller hvis du ønsker, at WebView skal håndtere almindelige web-URL'er.

Den korrekte måde at implementere shouldOverrideUrlLoading på for dette scenarie er at returnere true, når du selv har håndteret URL'en (f.eks. ved at starte et Intent), og false (eller lade view.loadUrl(url); køre) når WebView skal håndtere URL'en på egen hånd.

Her er den korrigerede kode:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:") || url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true; // Fortæl WebView, at vi har håndteret URL'en
} else if (url.startsWith("http:") || url.startsWith("https:")) {
// Lad WebView håndtere HTTP/HTTPS-links som normalt
view.loadUrl(url);
return true; // Fortæl WebView, at vi har bedt den om at indlæse URL'en
}
// For alle andre URL'er, lad WebView håndtere dem som standard
return false;
}

Lad os gennemgå ændringerne:

  • `return true;` inden for `if (url.startsWith("mailto:") || url.startsWith("tel:"))`: Når du returnerer true fra shouldOverrideUrlLoading, fortæller du WebView, at du har håndteret URL'en og at WebView ikke skal gøre noget yderligere med den. Dette er afgørende for at forhindre 'Webside ikke fundet'-fejlen.
  • `else if (url.startsWith("http:") || url.startsWith("https:"))`: Det er god praksis eksplicit at håndtere standard web-URL'er. Her lader vi WebView indlæse dem som normalt.
  • `return false;` til sidst: Hvis URL'en ikke matcher nogen af de specifikke skemaer, du ønsker at overstyre, returnerer du false. Dette instruerer WebView om at håndtere URL'en på sin standardmåde, hvilket ofte er at indlæse den direkte i WebView. Alternativt kan du fjerne else if og bare lade view.loadUrl(url); være den sidste linje, hvis du altid vil have WebView til at forsøge at indlæse en URL, der ikke er en `mailto` eller `tel` link. Men den præsenterede løsning er mere robust.

Ved at implementere denne korrigerede logik sikrer du, at når en bruger klikker på et tel:-link, åbnes telefonens opkaldsapp korrekt, og når opkaldet er afsluttet, vender brugeren tilbage til den side, de var på i WebView, uden at støde på en 'Webside ikke fundet'-fejl.

Yderligere Overvejelser for WebView og Intents

Udover tel: og mailto: er der andre URL-skemaer, som du måske ønsker at overstyre i din WebView for at give en bedre brugeroplevelse. Disse kan omfatte:

  • `sms:`: Til at starte SMS-beskeder.
  • `geo:`: Til at åbne kortapplikationer med specifikke koordinater.
  • Brugerdefinerede skemaer: Hvis din app interagerer med andre apps via brugerdefinerede URL-skemaer.

Hver gang du overstyrer shouldOverrideUrlLoading, er det vigtigt at tænke over, hvem der skal håndtere URL'en: din app via et Intent, eller WebView internt. En forkert håndtering kan føre til brudte links, dårlig brugeroplevelse eller endda sikkerhedsproblemer, hvis du ikke er forsigtig med, hvilke URL'er du tillader at blive indlæst eller behandlet.

Husk også at sikre, at din app har de nødvendige tilladelser (f.eks. CALL_PHONE til tel: links) i din AndroidManifest.xml, ellers vil Intentet mislykkes, selv med den korrekte kode.

Ofte Stillede Spørgsmål (FAQ)

Internationale Mobilopkald

Hvorfor skal jeg fjerne det første '0' (stamme præfiks) når jeg ringer internationalt?
Det første '0' er et nationalt stamme præfiks, der kun bruges inden for det land, du ringer fra. Når du ringer internationalt, erstattes dette præfiks af den internationale adgangskode (f.eks. '+' eller '00') efterfulgt af landekoden. Det nationale '0' er ikke en del af det internationale telefonnummer.
Hvad er forskellen på '+' og '00' når jeg ringer internationalt?
'+' er en universel forkortelse for den internationale adgangskode. Når du taster '+' på din mobiltelefon, oversætter telefonen automatisk til den korrekte internationale adgangskode for det land, du befinder dig i (f.eks. '00' i Danmark, '011' i USA/Canada). '00' er den specifikke internationale adgangskode, der bruges i mange europæiske lande. Brug af '+' er generelt mere brugervenligt og anbefales.
Kan jeg bruge internationale opkaldstjenester over internettet (VoIP) for at spare penge?
Ja, absolut! Tjenester som WhatsApp, Skype, Google Meet og FaceTime (for Apple-brugere) bruger Voice over Internet Protocol (VoIP) og giver dig mulighed for at foretage gratis eller meget billige opkald over Wi-Fi eller mobildata, så længe både du og modtageren har internetadgang og den relevante app installeret.
Hvordan gemmer jeg et internationalt nummer i mine kontakter?
Det er bedst altid at gemme internationale numre med plustegnet (+) efterfulgt af landekoden, og derefter det fulde nummer uden det nationale stamme præfiks. F.eks. '+45 1234 5678' for et dansk nummer eller '+49 170 1234567' for et tysk nummer. Dette sikrer, at du kan ringe til nummeret, uanset hvor i verden du befinder dig.

Tel-Links i Android WebView

Hvad er en Android WebView?
En Android WebView er en UI-komponent, der tillader Android-applikationer at vise webindhold. Det er i bund og grund en indlejret webbrowser, der giver udviklere mulighed for at integrere webbaseret indhold direkte i deres native apps uden at skulle åbne en separat browserapp.
Hvorfor er `shouldOverrideUrlLoading` vigtig?
`shouldOverrideUrlLoading` er en metode i `WebViewClient`, der kaldes, hver gang WebView er ved at indlæse en ny URL. Den giver app-udvikleren mulighed for at fange URL'en, før WebView behandler den, og beslutte, om appen selv skal håndtere URL'en (f.eks. ved at starte et Intent) eller lade WebView indlæse den som normalt. Dette er afgørende for at håndtere special-URL-skemaer som `tel:` og `mailto:` korrekt.
Hvilke andre URL-skemaer kan jeg overstyre udover `tel:` og `mailto:`?
Du kan overstyre mange andre URL-skemaer, herunder `sms:` (til at starte en SMS-app), `geo:` (til at åbne en kortapp med koordinater), og endda dine egne brugerdefinerede skemaer, hvis du har brug for at etablere dybe links mellem din app og andre apps eller specifikke funktioner i din egen app.
Skal jeg bekymre mig om Android-tilladelser, når jeg bruger `tel:` links i WebView?
Ja. For at din app kan starte et telefonopkald via et `tel:` link, skal du inkludere tilladelsen `<uses-permission android:name="android.permission.CALL_PHONE" />` i din `AndroidManifest.xml`. Uden denne tilladelse vil Intentet til at ringe mislykkes, og opkaldet vil ikke blive startet. For Android 6.0 (API 23) og nyere skal du også anmode om denne tilladelse under kørsel.

Vi håber, at denne artikel har klargjort både processen for internationale mobilopkald og den korrekte håndtering af tel:-links i Android WebView-applikationer. Ved at forstå disse principper kan du forbedre din kommunikation og skabe mere robuste og brugervenlige mobilapplikationer.

Hvis du vil læse andre artikler, der ligner Guide til Internationale Mobilopkald og App-Links, kan du besøge kategorien Teknologi.

Go up