När du provar din nya Android-app så vill du testa dess webb-vy. Det kan dock hända att du upptäcker ett fel som hindrar en webbläsarsida från att renderas i appen. Som ett resultat så kan det uppstå en negativ inverkan på appens användarupplevelse (UX).

Lyckligtvis så kan du enkelt åtgärda felet ERR_UNKNOWN_URL_SCHEME. Det kan exempelvis krävas att du inaktiverar Chrome-tillägg på frontend eller helt enkelt rensar cacheminnet. Alternativt så kan utvecklare inaktivera icke-standardiserade webbadresser i appens kodning.

I det här inlägget så förklarar vi vad felet ERR_UNKNOWN_URL_SCHEME är och vad som orsakar detta. Vi visar dig sedan hur du åtgärdar det på både frontend och backend. Nu sätter vi igång!

Vad är felet ERR_UNKNOWN_URL_SCHEME?

För att förstå felet ERR_UNKNOWN_URL_SCHEME så ska vi först diskutera inbyggda appar. Enkelt uttryckt så installeras en inbyggd applikation på en mobil enhet och är utformad för ett specifikt operativsystem.

Du kan hitta inbyggda appar i App Store eller Google Play Store:

Google Play Store
Google Play Store

För närvarande så kontrollerar Android 72 % av marknaden för mobila operativsystem. Därför så vill du kanske utveckla en app för Google Play Store. För att göra detta så använder du Android Studio, som är Android’s integrerade utvecklingsmiljö (IDE):

Android Studio
Android Studio

När du utvecklar din app så är det viktigt att du gör det möjligt för användarna att visa inbäddat innehåll i webbläsaren. Användare som inte behöver navigera fram och tillbaka från webbläsaren till appen får en mer konsekvent användarupplevelse.

För att lägga till den här funktionen i din app så använder du WebView. Den här speciella klassen visar sedan webbsidor direkt från en inhemsk app. Även om webbläsaren inte kommer att ha omfattande funktioner som ett sökfält eller navigerings-kontroller, så kommer WebView att återge en webbsida framgångsrikt.

Men din app kan även ge upphov till felet ERR_UNKNOWN_URL_SCHEME. I det här fallet så har den begärda webbplatsen ett webbadress-schema som den mobila enheten inte kan känna igen.

ERR_UNKNOWN_URL_SCHEME är vanligtvis ett fel i Chromium. Det har varit ett framträdande problem sedan Chrome 40. Orsakerna kan dock variera.

Vad orsakar felet ERR_UNKOWN_URL_SCHEME?

Även om WebView kan vara användbart i inbyggda appar så är det bara utrustat för att bearbeta några få olika webbadress-scheman. Ett webbadress-schema ger information om hur webbadressen ska tolkas.

Vanliga webbadress-scheman är ”https://” och ”http://”. Här är några webbadress-scheman som kan orsaka ERR_UNKNOWN_URL_SCHEME:

  • mailto://
  • whatsapp://
  • file://
  • telnet://
  • intent://
  • market://
  • app://
  • mail://
  • buy://

Om du är en app-utvecklare måste du därför använda en särskild webbadress-kodning för att förhindra att dessa webbadress-scheman orsakar fel. Annars så kommer användarna inte att kunna använda WebView i din app.

Alternativt så kan felet ERR_UNKNOWN_URL_SCHEME uppstå när en användare försöker öppna en omdirigerad webbadress. Du kan dessutom få det här meddelandet efter att ha använt OAuth med ett anpassat Chrome-kort.

Så här åtgärdar du felet ERR_UNKOWN_URL_SCHEME (8 metoder)

För utvecklare så innebär felet ERR_UNKNOWN_URL_SCHEME att appens WebView inte visar webbläsarsidor på ett effektivt sätt. Som ett resultat så hindras användare från att se rätt innehåll.

Oavsett om du är utvecklare eller frontend-användare så finns det dock några sätt att felsöka problemet. Här är åtta lösningar!

1. Inaktivera Chrome-tillägg

Många Chrome-fel kan lösas genom att felsöka dina webbläsartillägg. För att göra detta så går du till Fler verktyg > Tillägg. Alternativt så kan du helt enkelt söka efter ”chrome://extensions/”:

Öppna Chrome-tillägg
Öppna Chrome-tillägg

På den här sidan så visas en lista över dina installerade Chrome-tillägg. Först så inaktiverar du dem alla med hjälp av knappen i det nedre högra hörnet:

Inaktivera Chrome-tillägg
Inaktivera Chrome-tillägg

Kontrollera sedan om problemet har lösts. Om så är fallet så vet du att det var ett problem med ett av tilläggen.

Om du vill ta reda på vilket tillägg som orsakade felet ERR_UNKNOWN_URL_SCHEME så återaktiverar du dem ett efter ett. När du har aktiverat ett tillägg så ser du om problemet återkommer. När det gör detta så tar du bort det tillägget helt och hållet.

2. Rensa Chrome Cache och cookies

När du surfar på internet så sparar din webbläsare data från webbplatser i en cache. Som ett resultat så går ditt andra besök mycket snabbare. Dessa cachedata kan dock lätt bli skadade.

Om den första lösningen inte löste felet ERR_UNKNOWN_URL_SCHEME så kan du behöva rensa webbläsarens cache. I Google Chrome så går du till Fler verktyg > Rensa webbläsardata:

Öppna webbläsardata
Öppna webbläsardata

Se sedan till att välja Cachelagrade bilder och filer. Om du vill så kan du även rensa din webbhistorik, dina cookies och annan sparad webbplatsdata:

Rensa Chrome-cache
Rensa Chrome-cache

Försök därefter att ladda om sidan som du försökte nå. Om den sedan visas utan fel så har du åtgärdat problemet!

3. Stäng av maskinvaruacceleration

Hårdvaruacceleration sker när en webbläsare använder enhetens hårdvara för att öka effektiviteten. I Google Chrome så börjar enhetens grafiska processor (GPU) bearbeta uppgifter med tung grafik, som spel eller videospel.

För det mesta så gör hårdvaruacceleration det möjligt för Chrome att utföra mer komplexa uppgifter än vad programvaran kan stödja. Den här funktionen kan dock även orsaka fördröjning, frysning och till och med krascher.

Du bör kanske därför inaktivera hårdvaruacceleration. Öppna först sidan Inställningar i Chrome. Klicka sedan på fliken System:

Inaktivera maskinvaruacceleration
Inaktivera maskinvaruacceleration

Slutligen så använder du växelknappen för att stänga av hårdvaruacceleration. Du kommer att uppmanas att starta om Chrome med den nya inställningen.

4. Inaktivera brandväggen

En annan orsak till felet ERR_UNKNOWN_URL_SCHEME är exempelvis en felaktigt konfigurerad brandvägg. För att se om detta är fallet så kan du tillfälligt inaktivera brandväggen på din enhet.

Mac-användare kan klicka på äppelikonen. Välj sedan Systeminställningar:

Mac's Systeminställningar
Mac’s Systeminställningar

I listan med flikar så väljer du Nätverk. Leta sedan upp alternativet Brandvägg och stäng av den:

Inaktivera Mac-brandväggen
Inaktivera Mac-brandväggen

Om du har en Windows-dator så klickar du på Start och öppnar Inställningar. Navigera sedan till Sekretess och säkerhet > Windows-säkerhet > Brandvägg och nätverksskydd:

Inställningar för brandvägg och nätverksskydd i Windows
Inställningar för brandvägg och nätverksskydd i Windows

Nu måste du välja antingen domännätverk, privat nätverk eller offentligt nätverk. När du har gjort detta så hittar du inställningen Microsoft Defender Brandvägg och stänger av den:

Stäng av Microsoft Defender-brandväggen
Stäng av Microsoft Defender-brandväggen

Du kommer att se en säkerhets-popup som ber dig att bekräfta ditt val. Klicka på OK för att spara ändringen.

5. Skapa en ny Chrome-användarprofil

Om de tidigare metoderna inte löste felet ERR_UNKNOWN_URL_SCHEME så kan du försöka att skapa en helt ny Chrome-användarprofil. Se sedan om du kan besöka sidan utan problem.

Google Chrome gör det lyckligtvis enkelt att anpassa dina profiler. Klicka på din profilbild i det övre högra hörnet. Längst ner i popup-fönstret så trycker du på Lägg till:

Skapa en ny Chrome-profil
Skapa en ny Chrome-profil

På så sätt kan du skapa en ny profil. Du kan antingen logga in på ett befintligt Chrome-konto eller klicka på Fortsätt utan konto:

Skapa en Chrome-profil
Skapa en Chrome-profil

Innan du börjar surfa så ger du profilen ett namn. Du kan dessutom anpassa färgschemat:

Anpassa Chrome-profilen
Anpassa Chrome-profilen

Efter detta så har du en ny Chrome-profil som är oberoende av dina andra konton. När du sedan använder den här profilen så kan du försöka att ladda mål-webbplatsen. Om problemet kvarstår så är det en bra idé att kontakta apputvecklaren, som kommer att lösa problemet åt dig.

6. Öppna webbadressen i ett nytt fönster

Hittills så har vi förklarat hur användarna eventuellt kan lösa felet ERR_UNKNOWN_URL_SCHEME i en webbläsare. Om du är utvecklare så måste du veta hur du löser det här problemet så att din app får en felfri WebView.

En enkel lösning är att exempelvis redigera din webbadress href-kod. Genom att inkludera ett target-attribut i appens HTML så anger du hur webbläsaren ska öppnas.

Du kan exempelvis lägga till HTML-koden target=”_blank”. Som ett resultat så kommer WebView att öppnas i ett nytt fönster. Här är ett exempel:

<a href=”https://www.w3schools.com” target=”_blank”>Visit W3Schools</a>

Även om detta kan vara en effektiv kortsiktig lösning så kan det ha en negativ inverkan på appens användarupplevelse (UX). Vid webbutveckling så är det en bra idé att undvika att öppna nya fönster.

Kod-utdraget ovan tar bort knappen Tillbaka, vilket kan förvirra användarna när de vill återgå till föregående sida.

7. Lägg till en ny intention

Som Android-utvecklare så måste du använda intentioner. En intention beskriver i princip den åtgärd som du vill att appen ska utföra. Om du behöver åtgärda ett fel i webbadress-schemat så kan du exempelvis överväga att inkludera en intention för att innehållet ska laddas i en extern app.

Du kanske exempelvis vill att webbadress-schemat ”maps://” ska öppna en användares standard-applikation för kartor. Alternativt så kan ”mailto://” öppna e-postprogrammet.

För att lägga till en ny intention så använder du ett IF-uttalande. Detta säger till enheten att öppna särskilda scheman i en relevant extern app. Standardmässiga webbadress-scheman som ”https://” eller ”http://” öppnas dock normalt.

Så här skulle denna intention se ut i praktiken:

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (url == null || url.startsWith("http://") || url.startsWith("https://")) {

return false;

}

try {

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

view.getContext().startActivity(intent);

return true;

} catch (Exception e) {

Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e);

return true;

}

}

Du kan dock lägga till en anpassad intention för specifika externa appar. Om du exempelvis vill skicka användare till deras installerade Whatsapp så kan webbadress-överstyrningen ändras på följande sätt:

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

if (url.startsWith("whatsapp://")) {

webview.stopLoading();

try {

Intent whatsappIntent = new Intent(Intent.ACTION_SEND);

whatsappIntent.setType("text/plain");

whatsappIntent.setPackage("com.whatsapp");

whatsappIntent.putExtra(Intent.EXTRA_TEXT, webview.getUrl() + " - Shared from webview ");

startActivity(whatsappIntent);

} catch (android.content.ActivityNotFoundException ex) {

String MakeShortText = "Whatsapp has not been installed";

Toast.makeText(WebactivityTab1.this, MakeShortText, Toast.LENGTH_SHORT).show();

}

};

};

Den här koden gör det möjligt för din app att öppna Whatsapp på en användares enhet. Om Whatsapp inte är installerat kommer det att finnas ett toastmeddelande som talar om för användarna att ”Whatsapp inte har installerats”

8. Inaktivera icke-standardiserade URL-scheman

Istället för att använda intentioner så kan du dessutom inaktivera icke-standardiserade webbadress-scheman helt och hållet. Då kan du inte använda några andra webbadress-scheman än ”http://” och ”https://”.

Så här kan du exempelvis genomföra detta i HTML:

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

if (url.startsWith("http") || url.startsWith("https")) {

return true;

}else {

webview.stopLoading();

webview.goBack();

Toast.makeText(MainActivity.this, "Error: Unknown link type", Toast.LENGTH_SHORT).show();

}

return false;

}

Om en användare klickar på en länk som använder ett anpassat schema så kommer ett toast-meddelande att visas med följande text: ”Fel: Okänd länktyp”. Eftersom webbvisningen i din app inte kommer att ha stöd för anpassade scheman så kan du helt undvika felet ERR_UNKNOWN_URL_SCHEME.

Sammanfattning

När folk använder din app så vill de att externa länkar ska öppnas i samma applikation. Om den begärda webbplatsen exempelvis inte har ett känt webbadress-schema så kommer användarens mobila enhet att returnera felet ERR_UNKNOWN_URL_SCHEME.

På frontend så kan du lösa det här problemet i Chrome-browsers genom att stänga av hårdvaruacceleration eller skapa en helt ny användarprofil. I de flesta fall så måste dock appens utvecklare lösa det här felet. Som utvecklare så kan du åtgärda felet ERR_UNKNOWN_URL_SCHEME genom att lägga till en ny avsikt eller öppna webbadressen i ett nytt fönster.

När du utvecklar din app så behöver du en pålitlig och stabil hosting-leverantör. Vårt applikationshosting har 25 datacenter och chatt-support från experter dygnet runt, så att du enbart kan fokusera på utvecklingen!