Android - WebView
WebView ist eine Ansicht, die Webseiten in Ihrer Anwendung anzeigt. Sie können auch eine HTML-Zeichenfolge angeben und diese mit WebView in Ihrer Anwendung anzeigen. Mit WebView wird Ihre Anwendung zu einer Webanwendung.
Um Ihrer Anwendung WebView hinzuzufügen, müssen Sie hinzufügen <WebView>Element zu Ihrer XML-Layoutdatei. Die Syntax lautet wie folgt:
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Um es verwenden zu können, müssen Sie eine Referenz dieser Ansicht in der Java-Datei erhalten. Erstellen Sie ein Objekt der Klasse WebView, um eine Referenz abzurufen. Seine Syntax ist -
WebView browser = (WebView) findViewById(R.id.webview);
Um eine Web-URL in die WebView zu laden, müssen Sie eine Methode aufrufen loadUrl(String url)der WebView-Klasse unter Angabe der erforderlichen URL. Die Syntax lautet:
browser.loadUrl("http://www.tutorialspoint.com");
Abgesehen davon, dass Sie nur eine URL laden, können Sie mithilfe der in der WebView-Klasse definierten Methoden mehr Kontrolle über Ihr WebView haben. Sie sind wie folgt aufgeführt:
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | canGoBack() Diese Methode gibt an, dass WebView über ein Hintergrundelement verfügt. |
2 | canGoForward() Diese Methode gibt an, dass WebView über ein Vorwärtsverlaufselement verfügt. |
3 | clearHistory() Diese Methode löscht den WebView-Vorwärts- und Rückwärtsverlauf. |
4 | destroy() Diese Methode zerstört den internen Status von WebView. |
5 | findAllAsync(String find) Diese Methode findet alle Instanzen von Zeichenfolgen und hebt sie hervor. |
6 | getProgress() Diese Methode ruft den Fortschritt der aktuellen Seite ab. |
7 | getTitle() Diese Methode gibt den Titel der aktuellen Seite zurück. |
8 | getUrl() Diese Methode gibt die URL der aktuellen Seite zurück. |
Wenn Sie auf einen Link auf der Webseite von WebView klicken, wird diese Seite nicht in Ihre WebView geladen. Dazu müssen Sie Ihre Klasse von erweiternWebViewClientund überschreiben Sie seine Methode. Seine Syntax ist -
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
Beispiel
Hier ist ein Beispiel, das die Verwendung von WebView Layout demonstriert. Es wird eine grundlegende Webanwendung erstellt, in der Sie aufgefordert werden, eine URL anzugeben, und diese URL-Website in WebView geladen wird.
Um mit diesem Beispiel zu experimentieren, müssen Sie dies auf einem tatsächlichen Gerät ausführen, auf dem das Internet ausgeführt wird.
Schritte | Beschreibung |
---|---|
1 | Sie werden Android Studio verwenden, um eine Android-Anwendung unter einem Paket com.example.sairamkrishna.myapplication zu erstellen. |
2 | Ändern Sie die Datei src / MainActivity.java, um WebView-Code hinzuzufügen. |
3 | Ändern Sie res / layout / activity_main, um entsprechende XML-Komponenten hinzuzufügen |
4 | Ändern Sie die Datei AndroidManifest.xml, um die erforderlichen Berechtigungen hinzuzufügen |
5 | Führen Sie die Anwendung aus und wählen Sie ein laufendes Android-Gerät aus. Installieren Sie die Anwendung darauf und überprüfen Sie die Ergebnisse. |
Es folgt der Inhalt der geänderten Hauptaktivitätsdatei src/MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button b1;
EditText ed1;
private WebView wv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
ed1=(EditText)findViewById(R.id.editText);
wv1=(WebView)findViewById(R.id.webView);
wv1.setWebViewClient(new MyBrowser());
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = ed1.getText().toString();
wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl(url);
}
});
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
Es folgt der geänderte Inhalt der XML res/layout/activity_main.xml.
Im folgenden Code abc zeigt das Logo von tutorialspoint.com an
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:text="WebView" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="Enter Text"
android:focusable="true"
android:textColorHighlight="#ff7eff15"
android:textColorHint="#ffff25e6"
android:layout_marginTop="46dp"
android:layout_below="@+id/imageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/imageView"
android:layout_alignEnd="@+id/imageView" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter"
android:id="@+id/button"
android:layout_alignTop="@+id/editText"
android:layout_toRightOf="@+id/imageView"
android:layout_toEndOf="@+id/imageView" />
<WebView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/webView"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true" />
</RelativeLayout>
Es folgt der Inhalt der res/values/string.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Es folgt der Inhalt von AndroidManifest.xml Datei.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Versuchen wir, Ihre WebView-Anwendung auszuführen. Um die App von Android Studio aus auszuführen, öffnen Sie eine der Aktivitätsdateien Ihres Projekts und klicken Sie in
Geben Sie nun einfach eine URL in das URL-Feld ein und klicken Sie auf die angezeigte Schaltfläche zum Durchsuchen, um die Website zu starten. Stellen Sie jedoch vorher sicher, dass Sie mit dem Internet verbunden sind. Nach dem Drücken der Taste erscheint der folgende Bildschirm:
Hinweis. Durch einfaches Ändern der URL im URL-Feld öffnet Ihr WebView die gewünschte Website.
Das obige Bild zeigt die Webansicht von tutorialspoint.com