ارسال دیتا از صفحه وب (در وب ویو) به اپلیکیشن
دوشنبه, ۳۱ مرداد ۱۴۰۱، ۰۶:۵۲ ب.ظ
اگر بخواهیم با زدن یک دکمه در وب دیتا به اپلیکیشن ارسال شود؛ باید متد addJavascriptInterface برای وب ویو ست گردد. در ورودی این متد یک کلاس از جنس آبجکت و یک name پاس داده میشود.
binding.webView.addJavascriptInterface(new JavaScriptInterface(), "Android");
public class JavaScriptInterface {
private static final String TAG = "JavaScriptInterface";
// Show a toast from the web page
@JavascriptInterface
public void showToast(String toast) {
Log.d(TAG, "showToast: "+toast);
}
//received url from web
@JavascriptInterface
public void interceptUrl(String url){
Log.d(TAG, "interceptUrl: "+url);
}
}
سمت وب:
<html>
<head>
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" crossorigin="anonymous"></script>
</head>
<body>
<button name="test" style="width=50px , height=50px" onClick="test()" >request</button>
<script>
function test(){
console.log("--------------")
// API for get requests
let fetchRes = fetch("https://test.ir");
// fetchRes is the promise to resolve
// it by using.then() method
fetchRes.then(res =>
res.json()).then(data => {
console.log(data);
Android.showToast(JSON.stringify(data));
Android.interceptUrl('test.ir')
});
}
</script>
</body>
</html>
۰۱/۰۵/۳۱