Android webview - creați browserul dvs.

Creați un nou proiect MyBrowser și înlocuiți imediat codul în fișierul de configurare res / layout / activity_main.xml:

Deoarece aplicația va utiliza Internetul, trebuie să setați permisiunea de acces la Internet în fișierul manifest.







În același loc în manifeste modificăm linia pentru ecran, eliminând titlul din aplicația noastră (evidențiat cu caractere aldine):

Rulați aplicația. La dispoziția noastră a apărut cel mai simplu vizualizator de pagini web, dar cu un dezavantaj. Dacă faceți clic pe orice link, atunci veți porni automat browserul implicit, iar noua pagină va fi afișată deja acolo.

Android webview - creați browserul dvs.

UPD. Acum am aflat că chiar și atunci când aplicația este lansată, browserul se deschide imediat. Anterior, nu a fost așa.

Pentru a rezolva această problemă și pentru a deschide linkuri în programul dvs., trebuie să redefiniți clasa WebViewClient și să lăsați aplicația să se ocupe de legături. Să adăugăm o clasă imbricată în cod:

Apoi, în metoda onCreate (), definim o instanță a MyWebViewClient. Poate fi oriunde după inițializarea obiectului WebView:

Acum, în aplicația noastră WebViewClient este creat. care vă permite să încărcați orice URL specificat selectat în WebView. în containerul WebView în sine. în loc să rulați browserul. Pentru această funcționalitate, metoda shouldOverrideUrlLoading (WebView, String) este responsabilă. în care specificăm actualul WebView și adresa URL dorită. Valoarea returnată a valorii corecte indică faptul că nu este necesar să lansăm un browser terț și vom încărca automat conținutul prin referință.

Reporniți programul și asigurați-vă că linkurile sunt acum încărcate în aplicația în sine. Dar acum era o altă problemă. Nu ne putem întoarce la pagina anterioară. Dacă faceți clic pe butonul BACK de pe dispozitiv, închideți aplicația. Pentru a rezolva o nouă problemă, trebuie să ne ocupăm de apăsarea butonului BACK. Adăugăm o nouă metodă:

Trebuie să verificăm faptul că WebView acceptă navigarea la pagina anterioară. Dacă condiția este adevărată, atunci metoda goBack () este apelată. care ne întoarce la pagina anterioară cu un pas înapoi. Dacă există mai multe astfel de pagini, atunci putem reveni în mod constant la prima pagină. Metoda va reveni întotdeauna la adevărat. Când ne întoarcem la prima pagină, care începe navigarea pe web, apoi vin înapoi la false și de prelucrare apăsând butonul BACK va fi angajat deja sistemul în sine, care va închide ecranul de aplicare.







Android webview - creați browserul dvs.

Dacă aveți nevoie de unele dintre linkurile care trimit la site-ul deschis în browser-ul, și link-uri locale pentru a deschide în aplicația care condițiile utilizate cu valori diferite de returnare.

O metodă universală pe care toate legăturile locale o vor deschide în aplicație, restul în browser (modificați o linie):

Și acum vom complica un exemplu puțin, că utilizatorul are o alternativă la browserele standard.

Pentru a fi mai clară, vom redenumi exemplul după cum urmează. Creați două activități. În prima activitate, plasați butonul pentru a trece la cea de-a doua activitate, iar în a doua activitate plasați componenta WebView.

În manifestare prescrie filtrul pentru a doua activitate.

Codul butonului pentru a merge la a doua activitate.

A doua activitate ar trebui să ia datele:

În filtrul pentru cea de-a doua activitate, am indicat două acțiuni.

Aceasta înseamnă că orice activitate (citiți, aplicații) vă poate determina activitatea cu un mini-browser pe același principiu. Rulați orice proiect vechi din studio sau creați unul nou și adăugați un buton la acesta și scrieți același cod pe care l-am folosit pentru a face clic pe buton.

Puteți să vă trimiteți șirul de caractere ca o constantă șir și să îi spuneți tuturor potențialilor utilizatori ai browserului dvs. cum pot rula acasă. Dar Android are deja o astfel de acțiune constantă ACTION_VIEW. care, conform documentației, este după cum urmează:

Rescriem codul butonului pentru a doua aplicație

Ce se va întâmpla de data aceasta? Ne amintim că am scris două acțiuni, inclusiv android.intent.action.VIEW. Deci, prima noastră aplicație cu browserul ar trebui să recunoască și această comandă atunci când o aplicație utilizează acest cod de la utilizator. Pe emulator cel puțin există un astfel de program "Browser", iar acum a doua noastră activitate din prima aplicație a fost adăugată la acesta. Pe ecran apare o selecție de două aplicații.

Android webview - creați browserul dvs.

Și dacă ștergeți toate browserele alternative și lăsați doar programul dvs., atunci nu va mai fi de ales. Browserul dvs. va deveni cel mai important. Și dacă o aplicație dorește să lanseze pagina web în acest fel, programul dvs. se va deschide.

O mică observație. Dacă înlocuiți ultima linie cu aceasta:

Apoi, în fereastra de selecție a programului, în loc de linia de sus "Deschidere cu" sau de traducerea locală, va apărea linia. Dar acesta nu este cel mai important lucru. Dacă dintr-un motiv oarecare dispozitivul nu are un singur browser, atunci acest cod nu va provoca accidentul aplicației, spre deosebire de versiunea originală. Prin urmare, utilizați opțiunea propusă din motive de fiabilitate.

Lectură suplimentară







Trimiteți-le prietenilor: