我有两个设备,三星平板电脑GT 3113和Mini rk31 sdk (都是Android4.2.2),运行我的应用程序。我的应用程序使用javascript接口访问java方法。在这两款设备中,一款运行良好(三星),而另一款则不行。
BrowsableView -我的类扩展了webview
public class BrowsableView extends WebView {
@SuppressLint("SetJavaScriptEnabled")
public BrowsableView(Context context, AttributeSet attrs) {
super(context, attrs);
/// configurações para permitir execução de javascript
WebSettings webSettings = getSettings();
webSettings.setPluginState(PluginState.ON);
webSettings.setJavaScriptEnabled(true);
setClickable(true);
setKeepScreenOn(true);
setBackgroundColor(Color.TRANSPARENT);
setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
addJavascriptInterface(new WebAppInterface(Config.getContext()), "Android");
setWebViewClient(new BrowsableViewClient());
setWebChromeClient(new BrowsableViewChromeClient());
}
public void prepareNextHtml(String url){
loadUrl(url);
}
public class BrowsableViewClient extends WebViewClient{
@Override
public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {
Log.d(TAG, "EVENTO ONERROR DENTRO DO BROWSABLE");
_dispatchBrowsableViewErrorEvent();
}
}
public class BrowsableViewChromeClient extends WebChromeClient{
@Override
public boolean onConsoleMessage(ConsoleMessage cm){
Log.d("WebView", String.format("%s @ %d: %s", cm.message(), cm.lineNumber(), cm.sourceId()));
Toast.makeText(getContext(), "WebViewConsole: " + String.format("%s @ %d: %s", cm.message(), cm.lineNumber(), cm.sourceId()), Toast.LENGTH_LONG).show();
return true;
}
}
public class WebAppInterface {
Context mContext;
public WebAppInterface(Context c){
mContext = c;
}
@JavascriptInterface
public void finish(){
handler.removeCallbacksAndMessages(null);
Toast.makeText(getContext(), "Evento onCompletion no BrowsableView - Android.finish().", Toast.LENGTH_LONG).show();
_dispatchBrowsableViewCompletionEvent();
}
}
}Html示例
<html>
<head>
<script type="text/javascript">
setTimeout("Android.finish()",8000);
</script>
</head>
<body width="100%" height="100%">
<img width="100%" height="100%" src="654138997615629/teste.jpg" />
</body>
</html>在Mini-Pc设备中,不识别javascript接口的方法,并返回类似的错误。
Uncaught :对象对象没有方法“完成”
发布于 2015-10-02 07:45:39
我也有类似的问题。在一些4.4.2设备上进行了回调,而在一些设备上没有回调。我发现在“AndroidManifest.xml”中降低SDK的级别是有帮助的:
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="16"
/>现在,从JavaScript到@JavascriptInterface方法的回调甚至发生在忽略它的设备上。
https://stackoverflow.com/questions/23769397
复制相似问题