要在WebView中實現網頁與原生應用的交互,您需要使用JavaScriptInterface。以下是一個簡單的示例,展示了如何在Android WebView中實現網頁與原生應用的交互。
activity_main.xml
文件中添加WebView: android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
MainActivity.java
中設置WebView并啟用JavaScript:import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl("https://yourwebsite.com");
}
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
}
在這個示例中,我們創建了一個名為WebAppInterface
的內部類,并在其中定義了一個名為showToast
的方法。我們還使用@JavascriptInterface
注解標記了這個方法,以便在JavaScript中調用它。
<!DOCTYPE html>
<html>
<head>
<title>WebView Interaction</title>
<script type="text/javascript">
function showToast() {
Android.showToast("Hello from the web!");
}
</script>
</head>
<body>
<button onclick="showToast()">Show Toast</button>
</body>
</html>
當用戶點擊“Show Toast”按鈕時,將調用原生應用中的showToast
方法,并顯示一個Toast消息。
這只是一個簡單的示例,您可以根據需要擴展此方法以實現更復雜的交互。請注意,為了確保應用的安全性,請始終驗證從網頁傳遞的數據,并遵循最佳實踐。