我在WebView中运行了一些javascript,我希望收到有关JS中错误的控制台消息.按照http://developer.android.com/guide/webapps/debugging.html上的说明,我覆盖了方法
WebChromeClient.onConsoleMessage(String message, int lineNumber, String sourceID)
和
WebChromeClient.onConsoleMessage(ConsoleMessage cm),
将消息重定向到logcat.在Android 2.1中它运行良好,但在Android 2.2中没有调用此方法.
我做错了什么?
谢谢.
是否可以通过我的原生android代码与android中的webview进行交互?
我开发了用于Android的can bus驱动程序,我喜欢将我的can bus数据发送到webview中的html 5应用程序,而不是通过Internet将它们发送到web服务.或者是否可以通过我的原生Android应用程序中的html 5应用程序调用funktions?
你知道这个场景的好解决方案吗?
我的场景最初是我正在加载WebView,后来我正在使用不同的URL加载相同的WebView.
我的问题是每当我加载下一个URL时,我可以看到先前加载的URL内容,然后显示我当前加载的URL内容.
我想在加载不同的URL时清除内容.
说,
if (pos == 0) {
mweb.clearCache(true);
mweb.clearHistory();
mweb.loadUrl("http://stackoverflow.com/");
}
else if (pos == 1) {
mweb.clearCache(true);
mweb.clearHistory();
mweb.loadUrl("http://android.stackexchange.com/");
}
Run Code Online (Sandbox Code Playgroud)
双方clearCache()并clearHistory()没有为我工作.
我正在进行一个现场项目.当用户点击应用程序时 出现欢迎屏幕(该屏幕上有一个webview).如果互联网没有连接,那么应用程序崩溃.基本上,我的问题是以编程方式检查移动设备是否连接到互联网.如果没有,则不要将数据从webservice提取到webview中,并显示一个对话框,显示"检查你的网络连接"
在做研究时我发现了很多东西,我试图实现它.但是,它不满足我的要求
我的代码是,
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
else
{
Description.setVisibility(View.INVISIBLE);
new AlertDialog.Builder(WelcomePage.this)
.setTitle(getResources().getString(R.string.app_name))
.setMessage(
getResources().getString(
R.string.internet_error))
.setPositiveButton("OK", null).show();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我打电话这一功能doInBackground()的AsyncTask
请帮忙!
android android-webview android-internet android-websettings
我有一个使用WebViews的应用程序.我已经将目标API从18改为19,我正在测试新的4.4.出于某种原因,我收到了这个错误:Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png4.4但不是4.3,有人知道为什么?
由于我真的不知道从哪里开始看,我无法提供完整的代码.它可能与shouldInterceptRequest(Webview, String)WebViewClient中的方法有关,但我不太确定.如果我知道更多,我会更新问题.
在我的应用程序中,我目前使用Web视图显示一些内容,然后使用Javascript注入快速填写用户的表单.唯一的问题是,与Chrome自定义标签相比,Webview的速度非常慢.是否可以将Javascript代码注入这些自定义选项卡?
例如,以下是我目前使用的一些代码:
myWebView.loadUrl("javascript:document.getElementById('join_first_name').value='" + name + "';void(0); ");
Run Code Online (Sandbox Code Playgroud) 我在应用程序中看到了很多崩溃,并在此处将消息用作标题.几乎所有的崩溃都在OnePlus设备上,其中大部分是在Android Oreo分叉的Oxygen OS版本上.有没有人见过这个?以下是堆栈跟踪:
java.lang.RuntimeException: Package not found: com.android.chrome
at android.webkit.WebViewDelegate.getPackageId(WebViewDelegate.java:164)
at com.android.webview.chromium.ig.L(WebViewDelegateFactory.java:16)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.h(WebViewChromiumFactoryProvider.java:177)
at com.android.webview.chromium.se.run(WebViewChromiumFactoryProvider.java:5)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Run Code Online (Sandbox Code Playgroud)
编辑:2018年2月18日:
几个星期前我们收到了我们团队的One Plus 5T(OnePlus A5010),在运行我们的应用程序时没有看到任何问题.该设备预装了Android 7.0的OxygenOS前叉.但是,今天该设备收到了Android 8.0.0(OxygenOS 5.0.3)更新通知,并且在成功安装更新后,我们的应用程序崩溃了相同的堆栈跟踪.这次崩溃严重影响了我们的用户群.任何帮助将不胜感激.
-Edit:找到解决方案
- 在经过一番繁重的搜索后想出来 - 一个人(我的意思是一个人)说他们改为使用onPageLoad(); 这完全符合我的目的.区别在于onPageLoad()的运行时间晚于shouldOverrideUrlLoading,但它对我的代码没有影响.
我正在尝试使用OAuth为Android应用程序设置Twitter授权,到目前为止我可以成功将用户发送到授权URL,但是,我现在要做的是拦截重定向到回调(这只是导致404错误,我们的回调URL不会在我们的服务器上有关联的页面).我要做的是检查URL是否是我们的回调,然后从URL中提取OAuth Verifier.我使用以下代码设置我的WebView:
view = (WebView)findViewById(R.id.twitterWbVw);
view.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView wView, String url)
{
String urlHolder;
String[] verifExtrctr;
urlHolder = url.substring(0, url.indexOf('?'));
System.out.println("url");
if(urlHolder.equalsIgnoreCase(CALLBACK_URL))
{
verifExtrctr = urlHolder.split("?");
verifExtrctr = verifExtrctr[2].split("=");
if(verifExtrctr[0].equalsIgnoreCase("oauth_verifier"))
{
params[5] = verifExtrctr[1];
return true;
}
else
{
System.out.println("Inocorrect callback URL format.");
}
}
else
{
wView.loadUrl(url);
}
return true;
}
});
view.loadUrl(urlAuthorize.toExternalForm());
Run Code Online (Sandbox Code Playgroud)
事情甚至是System.out.println("url"); (我用来调试)不运行!所以我的想法非常枯燥,找不到有类似问题的人.授权URL运行良好,我可以成功授权应用程序,但由于某种原因重定向到回调URL永远不会被截获.任何帮助将不胜感激,这是在我的onResume(),如果这很重要.
我的WebViewAndroid 4.x设备上有一个问题.
Android应用有一个包含片段的Tabhost.其中一个片段包含webview.显示的页面有一个下拉菜单,如下所示:
<select id="mySelect" name="mySelect">
<option value="1">Testname 1</option>
<option value="2">Testname 2</option>
<option value="3">Testname 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在,当我使用带有Android 4.1.1的Galaxy S3(或任何其他Android设备,我可以开始使用)打开我的应用程序时,我可以选择"Testname 1",然后选择"Testname 2",依此类推.
在Galaxy Nexus上(在运行Android 4.1.1,4.1.2和4.2的不同设备上确认)当我尝试选择UI时阻止的东西.在我切换到另一个选项卡并突然返回到webview选项卡后,UI最终更改为先前选择的项目.
知道是什么导致了这个或如何为Galaxy Nexus解决这个问题?
重要更新:
我可以追踪到这一点Tabhost.当webview它在tabhost它不起作用时,它不起作用.这可能与此问题有关.
嗨,我知道这个问题有答案.我已经尝试了所有这些,但它在我的应用程序中无效.我正在开发一个具有3个Fragment活动的应用程序.第一个片段显示一个网站,第二个片段显示listview,第三个片段显示另一个列表视图.现在我想在用户点击listitem时将第三个片段的URL发送到第一个片段.这就是我所做的.
我从这个Fragment发送字符串url到第一个片段.
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,
long id) {
FragmentC fragment = new FragmentC();
final Bundle bundle = new Bundle();
bundle.putString("position", "http://www.facebook.com"); fragment.setArguments(bundle);}
});
Run Code Online (Sandbox Code Playgroud)
这是我需要网址并希望在网页浏览中显示的第一个片段.
String url="http://www.hotelsearcher.net/";
Bundle args = getArguments();
if (args != null){
url = args.getString("position");
}
WebView webView= (WebView) V.findViewById(R.id.webView1);
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setPluginState(PluginState.ON);
webView.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)
当我点击列表项时,我什么都没看到.它没有将我重定向到第一个片段.请帮帮我..