Scambiare dati tra una WebView Android e una pagina HTML
Il componente WebView ci permette di visualizzare il contenuto di una pagina web all'interno della nostra app Android.
Oggi vediamo come eseguire un semplice scambio dati; per farlo ovviamente useremo anche Javascript, oltre che a Java.
Cominciamo con la nostra Activity:
package com.mp.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.webView);
webView.addJavascriptInterface(new MyJsInterface(this), "Android");
webView.loadUrl("https://www.sito.it/pagina.html");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
}
}
La WebView l'abbiamo inserite nel nostro layout; nulla di complicato.
Vediamo invece la classe che ci fa da "interfaccia":
package com.mp.test;
import android.content.Context;
import android.webkit.JavascriptInterface;
import android.widget.Toast;
public class MyJsInterface {
Context mContext;
MyJsInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
Ricordatevi che dovete aggiungere questi permessi nel manifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Infine ecco la pagina HTML:
<script>
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
<input type="button" value="Say hello" onClick="showAndroidToast('Ciao dal web!')">
Se adesso avviate la app e cliccate sul tasto, vedrete apparire il classico Toast Android.
Ovviamente questo è solo un esempio basico.
Enjoy!
java android html javascript webview
Commentami!