Bij het uitproberen van je nieuwe Android app, wil je natuurlijk de WebView ervan testen. Het is echter mogelijk dat je een fout tegenkomt waardoor een browserpagina niet kan worden weergegeven in de app. Dit kan de User Experience (UX) van je app negatief beïnvloeden.
Gelukkig kun je de fout ERR_UNKNOWN_URL_SCHEME eenvoudig oplossen. Aan de frontend moet je misschien Chrome extensies uitschakelen of gewoon de cache wissen. Als alternatief kunnen developers niet-standaard URL’s uitschakelen in de codering van de app.
In dit artikel leggen we uit wat de ERR_UNKNOWN_URL_SCHEME fout is en wat de oorzaak ervan is. Daarna laten we je zien hoe je het zowel aan de frontend als aan de backend kunt oplossen. Laten we beginnen!
Wat is de ERR_UNKNOWN_URL_SCHEME fout?
Om de ERR_UNKNOWN_URL_SCHEME fout te begrijpen, laten we het eerst hebben over native apps. Eenvoudig gezegd is een native applicatie geïnstalleerd op een mobiel apparaat en ontworpen voor een specifiek besturingssysteem.
Je kunt native apps vinden in de App Store of Google Play Store:
Momenteel beheerst Android 72% van de markt voor mobiele besturingssystemen. Daarom wil je misschien je native app voor de Google Play Store ontwikkelen. Hiervoor gebruik je Android Studio, de geïntegreerde ontwikkelomgeving (IDE) van Android:
Bij het ontwikkelen van je app is het belangrijk om gebruikers in staat te stellen ingesloten webbrowserinhoud te bekijken. Gebruikers die niet heen en weer hoeven te navigeren van een browser naar je app hebben een consistentere UX.
Om deze feature aan je app toe te voegen, gebruik je WebView. Deze speciale klasse toont webpagina’s rechtstreeks vanuit een native app. Hoewel de browser geen uitgebreide features heeft zoals een zoekbalk of navigatiebesturingselementen, zal WebView met succes een webpagina weergeven.
Je native app kan echter ook een ERR_UNKNOWN_URL_SCHEME fout produceren. In dit geval heeft de opgevraagde website een URL schema dat het mobiele apparaat niet kan herkennen.
De ERR_UNKNOWN_URL_SCHEME is meestal een Chromium bug. Het is een prominent probleem sinds Chrome 40. Het kan echter een paar verschillende oorzaken hebben.
Wat veroorzaakt de ERR_UNKOWN_URL_SCHEME fout?
Hoewel WebView nuttig kan zijn in native apps, is het slechts uitgerust om een paar verschillende URL schema’s te verwerken. Een URL schema geeft informatie over hoe de URL moet worden geïnterpreteerd.
De standaard URL schema’s zijn ‘https://’ en ‘http://’. Hier zijn enkele URL schema’s die de ERR_UNKNOWN_URL_SCHEME kunnen veroorzaken:
- mailto://
- whatsapp://
- file://
- telnet://
- intent://
- market://
- app://
- mail://
- buy://
Als je een appdeveloper bent, moet je specifieke URL codering gebruiken om te voorkomen dat deze URL schema’s fouten veroorzaken. Anders kunnen gebruikers WebView niet gebruiken in je native app.
Als alternatief kan de fout ERR_UNKNOWN_URL_SCHEME optreden wanneer een gebruiker een omgeleide URL probeert te openen. Je kunt dit bericht ook zien na gebruik van OAuth met een customChrome kaart.
Zo los je de ERR_UNKOWN_URL_SCHEME fout op (8 methoden)
Voor developers betekent de ERR_UNKNOWN_URL_SCHEME fout dat de WebView van je app de webbrowser pagina’s niet effectief weergeeft. Hierdoor krijgen gebruikers niet de juiste content te zien.
Of je nu een developer bent of een frontendgebruiker, er zijn een paar manieren om het probleem op te lossen. Hier zijn acht oplossingen!
1. Schakel Chrome extensies uit
Veel Chrome fouten kunnen worden opgelost door het oplossen van je browserextensies. Ga daarvoor naar More Tools > Extensions Je kunt ook gewoon zoeken naar “chrome://extensions/”:
Op deze pagina zie je een lijst van je geïnstalleerde Chrome extensies. Schakel ze eerst allemaal uit met de schakelaar rechtsonder:
Controleer vervolgens of het probleem is opgelost. Als dat zo was, dan weet je dat er een probleem was met een van de extensies.
Om uit te zoeken welke extensie de fout ERR_UNKNOWN_URL_SCHEME veroorzaakte, schakel je ze een voor een weer in. Kijk na het inschakelen van een extensie of het probleem weer optreedt. Als dat zo is, verwijder die extensie dan helemaal.
2. Wis de Chrome cache en cookies
Terwijl je op internet surft, slaat je browser gegevens van websites op in een cache. Dit zorgt ervoor dat je tweede bezoek veel sneller verwerkt. Deze gegevens in de cache kunnen echter gemakkelijk beschadigd raken.
Als de eerste oplossing de fout ERR_UNKNOWN_URL_SCHEME niet heeft opgelost, moet je misschien de cache van je browser wissen. Ga in Google Chrome naar More Tools > Clear Browsing Data:
Zorg er dan voor dat je Cached images and files selecteert. Als je wilt, kun je ook je browsegeschiedenis, cookies en andere opgeslagen sitegegevens wissen:
Probeer hierna de pagina die je probeerde te bereiken opnieuw te laden. Als die zonder foutmelding wordt weergegeven, heb je het probleem opgelost!
3. Schakel hardwareversnelling uit
Hardwareversnelling gebeurt wanneer een browser de hardware van je apparaat gebruikt om de efficiëntie te verhogen. In Google Chrome gaat de grafische verwerkingseenheid (GPU) van je apparaat taken met zware graphics verwerken, zoals gamen of video’s afspelen.
Meestal stelt hardwareversnelling Chrome in staat om complexere taken uit te voeren dan zijn software kan ondersteunen. Deze feature kan echter ook vertraging, bevriezing en zelfs crashes veroorzaken.
Daarom wil je misschien hardwareversnelling uitschakelen. Open eerst de pagina Settings van Chrome. Klik vervolgens op het tabblad System:
Gebruik ten slotte de tuimelschakelaar om de hardwareversnelling uit te schakelen. Je wordt gevraagd Chrome opnieuw te starten met deze nieuwe instelling.
4. Schakel je firewall uit
Een andere reden voor de ERR_UNKNOWN_URL_SCHEME fout is een verkeerd geconfigureerde firewall. Om te kijken of dit het geval is, kun je de firewall op je apparaat tijdelijk uitschakelen.
Voor Mac gebruikers klik je op het appelicoontje. Selecteer dan System Settings:
Klik in de lijst met tabbladen op Network. Zoek vervolgens de optie Firewall en schakel deze uit:
Als je een Windows computer hebt, klik dan op Start en open Settings. Navigeer dan naar Privacy & Security > Windows security > Firewall & network protection:
Nu moet je het Domain network, Private network of Public network selecteren. Zodra je dit gedaan hebt, zoek je de instelling Microsoft Defender Firewall en schakel je die uit:
Je ziet een beveiligingspopup die je vraagt je keuze te bevestigen. Klik op OK om de wijziging op te slaan.
5. Maak een nieuw Chrome gebruikersprofiel aan
Als de voorgaande methoden de fout ERR_UNKNOWN_URL_SCHEME niet hebben opgelost, kun je proberen een geheel nieuw Chrome gebruikersprofiel aan te maken. Kijk dan of je de pagina zonder problemen kunt bezoeken.
Gelukkig maakt Google Chrome het gemakkelijk om je profielen aan te passen. Klik in de rechterbovenhoek op je profielfoto. Onderaan de pop-up druk je op Add:
Hiermee kun je een nieuw profiel instellen. Je kunt je aanmelden bij een bestaand Chrome account of op Continue without an account klikken:
Voordat je gaat browsen, geef je het profiel een naam. Bovendien kun je het kleurenschema aanpassen:
Hierna heb je een nieuw Chrome profiel, onafhankelijk van je andere accounts. Probeer tijdens het gebruik van dit profiel de doelwebpagina te laden. Als het probleem aanhoudt, is het een goed idee om contact op te nemen met de developer van de app, die het probleem voor je zal oplossen.
6. Open de URL in een nieuw venster
Tot nu toe hebben we uitgelegd hoe gebruikers mogelijk de ERR_UNKNOWN_URL_SCHEME fout in een browser kunnen oplossen. Als je een developer bent, moet je weten hoe je dit probleem kunt oplossen, zodat je app een foutloze WebView krijgt.
Een eenvoudige oplossing is het bewerken van je URL href code. Door een doelattribuut op te nemen in de HTML van je app, geef je aan hoe de browser geopend moet worden.
Je kunt bijvoorbeeld de HTML code target=”_blank” toevoegen. Dit opent de WebView in een nieuw venster. Hier is een voorbeeld:
<a href=”https://www.w3schools.com” target=”_blank”>Visit W3Schools</a>
Hoewel dit een effectieve kortetermijnoplossing kan zijn, kan het de User Experience (UX) van je app negatief beïnvloeden. Bij webontwikkeling is het een goed idee om het openen van nieuwe vensters te vermijden.
Het bovenstaande codefragment verwijdert de Back knop, die gebruikers in verwarring kan brengen als ze terug willen naar de vorige pagina.
7. Voeg een nieuwe intentie toe
Als Android developer moet je intenties gebruiken. In wezen beschrijft een intentie de actie die je de app wilt laten uitvoeren. Als je een fout in het URL schema moet herstellen, kun je overwegen een intentie op te nemen voor het laden van de content in een externe app.
Bijvoorbeeld, je wilt misschien dat het ‘maps://’ URL schema de standaard kaartenapplicatie van een gebruiker opent. Als alternatief kan ‘mailto://’ de mail app openen.
Om een nieuwe intentie toe te voegen, gebruik je een IF statement. Deze vertelt het apparaat om speciale schema’s te openen in een relevante externe app. Standaard URL schema’s als ‘https://’ of ‘http://’ worden echter normaal geopend.
Hier zie je hoe deze intentie er in actie uit zou zien:
@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;
}
}
Je kunt echter een custom intentie toevoegen voor specifieke externe apps. Als je gebruikers naar hun geïnstalleerde Whatsapp wilt sturen, is dit hoe de URL overschrijving zou kunnen veranderen:
@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();
}
};
};
Met deze code kan je app Whatsapp openen op het apparaat van een gebruiker. Als het niet is geïnstalleerd, komt er een toastbericht dat gebruikers vertelt “Whatsapp has not been installed.”
8. Schakel niet-standaard URL schema’s uit
In plaats van intenties te gebruiken, kun je ook niet-standaard URL schema’s volledig uitschakelen. Hierdoor kun je geen andere URL schema’s gebruiken dan ‘http://’ en ‘https://’.
Hier zie je hoe je dit in HTML implementeert:
@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;
}
Als een gebruiker op een link klikt die een aangepast schema gebruikt, verschijnt er een toastbericht met de tekst “Error: Unknown link type”. Omdat de WebView van je app geen aangepaste schema’s ondersteunt, kun je de fout ERR_UNKNOWN_URL_SCHEME volledig vermijden.
Samenvatting
Wanneer mensen je native app gebruiken, zullen ze willen dat externe links binnen dezelfde applicatie worden geopend. Als de gevraagde website geen bekend URL schema heeft, zal het mobiele apparaat van de gebruiker een ERR_UNKNOWN_URL_SCHEME foutmelding geven.
Aan de frontend kun je dit probleem in Chrome browsers oplossen door hardwareversnelling uit te schakelen of een geheel nieuw gebruikersprofiel aan te maken. Maar in de meeste gevallen zal de developer van de app deze fout moeten oplossen. Als developer kun je de ERR_UNKNOWN_URL_SCHEME fout oplossen door een nieuwe intentie toe te voegen of de URL in een nieuw venster te openen.
Terwijl je je app ontwikkelt, heb je betrouwbare en stabiele hosting nodig. Onze Applicatie Hosting heeft 25 datacenters en 24/7 deskundige chatondersteuning, zodat jij je alleen op de ontwikkeling kunt richten!