আমি javascriptএকটি htmlপৃষ্ঠার ভিতরে চলমান কিছু ফাংশন কল করার চেষ্টা করছি android webview। কোডটি নীচে কী করার চেষ্টা করে তা খুব সহজ - অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে, javascriptএকটি পরীক্ষা বার্তা সহ একটি ফাংশন কল করে , যা প্রবেশের মাধ্যমে জাভা ফাংশনটিকে আবার অ্যান্ড্রয়েড অ্যাপে কল করে যা টোস্টের মাধ্যমে পরীক্ষার বার্তা প্রদর্শন করে।
javascriptফাংশন দেখে মনে হচ্ছে:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
ওয়েবভিউ থেকে আমি javascriptনিম্নলিখিত উপায়গুলিকে ভাগ্যবিহীন কল করার চেষ্টা করেছি :
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
আমি সক্ষম হয়নি javascriptউপরWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
এবং heres Javaক্লাস
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
আমি কী ভুল করছি তা দেখতে আমি প্রায় সময় গুগল করে কাটিয়েছি। সমস্ত উদাহরণ আমি এই পদ্ধতির ব্যবহার পেয়েছি। কেউ কি এখানে কিছু ভুল দেখছেন?
সম্পাদনা করুন: এখানে আরও বেশ কয়েকটি বাহ্যিক javascriptফাইল রেফারেন্স ও ব্যবহৃত হচ্ছে html, সেগুলি কি সমস্যা হতে পারে?
@JavascriptInterfaceথেকে আপনার জাভাস্ক্রিপ্ট ইন্টারফেসের মাধ্যমে ওয়েবভিউতে উপলব্ধ করতে চান এমন জাভা পদ্ধতিতে ডেকরেটার ব্যবহার করা দরকার।
myWebView.loadUrl("javascript:testEcho('Hello World!')");আমি বুঝতে পারি যে আপনি ইতিমধ্যে এই HTML ভিউলে এইচটিএমএল ফাইল সংযুক্ত করেছেন। আপনি আমাকে বলতে পারেন যে আপনি এটি কিভাবে?