2017-05-03 20 views
8

Tôi có chế độ xem web trong ứng dụng Android của mình.
Tôi đã tải url: https://imsnsit.org/imsnsit/notifications.php
Có các liên kết đến các thông báo khác nhau. WebView của tôi không làm gì khi tôi nhấp vào chúng. Nó đang hoạt động trên mọi thứ khác - Chrome (Android), Chrome (Máy tính để bàn). Các liên kết là tốt. Một điều tôi nhận thấy thông báo có href với tập tin PHP. Chỉ cần điều hướng đến liên kết đó không hoạt động. Tôi nhận được hoạt động không hợp lệ. Cộng với các liên kết không tĩnh, chúng thay đổi mỗi khi bạn làm mới trang (chỉ là tham số cho plum_url.php).
Tôi đã sử dụng các chức năng này. Không có gì giúp.
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setDomStorageEnabled(true);Lần nhấp không hoạt động trong WebView

Trả lời

3

bạn có thể mở cửa sổ mới trong webview như thế này

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; 
      } 
     }); 
+0

đã thử điều này, không hoạt động –

+0

vấn đề gì bạn đang nhận được? – MageNative

+0

khi tôi bấm vào liên kết nó không có gì đó là vấn đề –

1

tôi sẽ đề nghị bạn bắt đầu sử dụng các tab tùy chỉnh nhanh hơn và tốt hơn. Việc thực hiện chi tiết có tại 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)); 

tab Tuỳ chỉnh sẽ là một giải pháp tuyệt vời nếu bạn đang có kế hoạch không chuyển hướng đến các ứng dụng từ xem web của bạn. Các vấn đề với webview là rất cụ thể để thực hiện của bạn vì vậy không thể đề nghị một soln ở đây. Vui lòng dán cách triển khai cách bạn mở một chế độ xem web và nội dung php hoặc các liên kết mà bạn đang cố mở.

+0

Thực ra tôi có một danh sách các thông báo trong ứng dụng của tôi. Tôi muốn mở thông báo khi người dùng nhấp vào nó. Vấn đề là tôi muốn sử dụng để mở thông báo đầu tiên (giả sử) bằng Javascript để các tab tùy chỉnh không phải là tùy chọn –

5

Tôi đã kiểm tra liên kết của bạn và tất cả các liên kết đang mở tệp pdf không được hỗ trợ trong chế độ xem web trên Android. bạn có thể mở các liên kết như vậy trong tài liệu google hoặc có thể một số ứng dụng trong thiết bị của bạn. Triển khai shouldOverrideUrlLoad thứ gì đó như thế này.

@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; 
} 
2

https://www.mkyong.com/android/android-webview-example/
Tạo hai file layout Android - “res/layout/main.xml” và “res/layout/webview .xml “.

File: 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> 

File: res/layout/main.xml - ví dụ 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" 
/> 

Hai lớp học hoạt động, một hoạt động để hiển thị một nút, một hoạt động khác hiển thị WebView với URL được xác định trước.

File: 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); 
      } 

     }); 

    } 

} 

File: 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 cần sự cho phép INTERNET, thêm dưới đây vào AndroidManifest.xml.

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

Tệp: AndroidManifest.xml - Xem ví dụ đầy đủ.

<?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> 

nó sẽ giúp bạn.

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

-1

Bạn đang cố gắng mở target = “_ blank” liên kết trong Android WebView vì vậy hãy thử bên dưới mã.

Đầu tiên thêm này:

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; 
    } 
}; 

Sử dụng bạn này có thể mở liên kết trong trình duyệt mặc định.

Các vấn đề liên quan