我发现问题出在通过JavaScript接口调用Java函数
var saved_lang = window.ob.readfile3('lang.txt');
以某种方式 .readfile3()“不再是函数”
我正在浏览不同的论坛和网站,观看了很多youtube视频,但是我一下子找不到如何解决旧代码的问题,从而继续正常工作。
以下是一些详细信息
来自app / build.gradle:
compileSdkVersion 27
minSdkVersion 15
targetSdkVersion 27
onCreate类的开始:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyObject myObject = new MyObject();
setContentView(R.layout.activity_main);
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(myObject,"ob");
myWebView.loadUrl("file:///android_asset/www/index.html");
myWebView.setWebViewClient(new WebViewClient());
...
}
这是MyObject类(它的一部分)
class MyObject{
private MainActivity ma;
@android.webkit.JavascriptInterface
private String writeConfigString(String myStr){
writeFile(myStr);
return "file is written";
}
@android.webkit.JavascriptInterface
private String readfile3(String fileName){
String out = readFile2(fileName);
return out;
}
...
}
答案 0 :(得分:0)
经过几天的搜索和测试,我发现here在最新版本的Android API中发生了一些变化,并且我尝试对MyObject类的所有JavascriptInterface方法进行 PUBLIC 。像这样:
class MyObject{
public MainActivity ma;
@android.webkit.JavascriptInterface
public String writeConfigString(String myStr){
writeFile(myStr);
return "file is written";
}
@android.webkit.JavascriptInterface
public String readfile3(String fileName){
//return MainActivity.email;
String out = readFile2(fileName);
return out;
}
...
}
现在一切正常=)
P.S。我希望此解决方案可以帮助其他人。