点击在WebView中不起作用

我有我的android应用程序的webview
我已经加载了url: https : //imsnsit.org/imsnsit/notifications.php
有各种通知的链接。 当我点击它们时,我的WebView没有任何作用。 它正在处理所有其他事情 – Chrome(Android),Chrome(桌面)。 链接很好。 有一件事我注意到通知有PHP文件的href。 只是导航到该链接不起作用。 我得到无效的操作。 再加上链接不是静态的,每次刷新页面时都会改变(只是plum_url.php的参数)。
我已经在使用这些function。 没什么帮助。
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setDomStorageEnabled(true);

Solutions Collecting From Web of "点击在WebView中不起作用"

我检查了你的链接,所有的链接都打开一个PDF文件,这是不支持在Androidnetworking视图。 您可以在Google文档中打开这样的链接,或者在您的设备中打开一些应用。 实现shouldOverrideUrlLoading这样的东西。

  @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if ( urlIsPDF(url)){ Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "application/pdf"); try{ view.getContext().startActivity(intent); } catch (ActivityNotFoundException e) { //user does not have a pdf viewer installed } } else { webview.loadUrl(url); } return true; } 

你可以像这样在webview中打开新窗口

 WebView webviewContact=(WebView)findViewById(R.id.webviewcontact); webviewContact.loadUrl("https://imsnsit.org/imsnsit/notifications.php"); webviewContact.clearCache(true); webviewContact.clearHistory(); //webviewContact.getSettings().setDomStorageEnabled(true); //webviewContact.getSettings().setSupportMultipleWindows(true); webviewContact.getSettings().setJavaScriptEnabled(true); webviewContact.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webviewContact.setWebViewClient(new WebViewClient(){ /*For open new window in webview*/ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Toast.makeText(getApplicationContext(),url,Toast.LENGTH_SHORT).show(); view.loadUrl(url); return false; } }); 

https://www.mkyong.com/android/android-webview-example/
创build两个Android布局文件 – “res / layout / main.xml”和“res / layout / webview.xml”。

文件:res / layout / main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/buttonUrl" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go to http://www.google.com" /> </LinearLayout> 

文件:res / layout / main.xml – WebView示例

 <?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webView1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

两个活动类,一个显示button的活动,另一个活动显示具有预定义URL的WebView。

文件:MainActivity.java

 package com.mkyong.android; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button button; public void onCreate(Bundle savedInstanceState) { final Context context = this; super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.buttonUrl); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(context, WebViewActivity.class); startActivity(intent); } }); } } 

文件:WebViewActivity.java

 package com.mkyong.android; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; public class WebViewActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); } } 

WebView需要INTERNET权限,下面添加到AndroidManifest.xml中。

 <uses-permission android:name="android.permission.INTERNET" /> 

文件:AndroidManifest.xml – 看完整的例子。

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mkyong.android" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".WebViewActivity" android:theme="@android:style/Theme.NoTitleBar" /> <activity android:label="@string/app_name" android:name=".MainActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

它会帮助你。

https://www.mkyong.com/android/android-webview-example/

我build议你开始使用自定义选项卡更快,更好。 详细的实现在https://developer.chrome.com/multidevice/android/customtabs

 // Use a CustomTabsIntent.Builder to configure CustomTabsIntent. // Once ready, call CustomTabsIntent.Builder.build() to create a CustomTabsIntent // and launch the desired Url with CustomTabsIntent.launchUrl() String url = ¨https://paul.kinlan.me/¨; CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); CustomTabsIntent customTabsIntent = builder.build(); customTabsIntent.launchUrl(this, Uri.parse(url)); 

如果您计划不从Web视图redirect到应用程序,自定义选项卡将是一个很好的解决scheme。 webview的问题是非常具体到你的实现,所以不能在这里提出一个soln。 请粘贴您如何打开网页视图的实施,以及您尝试打开的php内容或链接是什么。

您正尝试在Android WebView中打开target =“_ blank”链接,请尝试下面的代码。

首先添加这个:

 webView.setWebChromeClient(webChromeClient); webView.getSettings().setSupportMultipleWindows(true); WebChromeClient webChromeClient = new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView.HitTestResult result = view.getHitTestResult(); String data = result.getExtra(); Context context = view.getContext(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data)); context.startActivity(browserIntent); return false; } }; 

使用这个,你可以在默认浏览器中打开该链接。