2015-10-10 12 views
8

Đang cố gắng để chuyển hướng trang html địa phương trong webview android sử dụng Javascript chuyển hướng, bị từ chối bắt đầu một ý định trong Logcat:từ chối bắt đầu một ý định mà không có một cử chỉ người dùng Webview Android

kiểm tra trên android 5.1.1

document.location = "index.html";

Denied bắt đầu một ý định mà không có một cử chỉ của người dùng, URI:

file:///android_asset/index.html

Trả lời

34

tôi đọc tài liệu trong 1.000 lần thử Android.developer và đây là giải pháp của tôi

Tôi không biết nếu bạn hiểu, tôi nói tiếng Tây Ban Nha

webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return false;     
    } 
}); 
+0

trình như một say mê, Cảm ơn – Abdullah

+0

làm việc! @Abdullah xin vui lòng chấp nhận câu trả lời này nếu điều này là làm việc cho bạn. –

+0

@Abdullah, vui lòng chấp nhận câu trả lời này. Chính xác là – rkyr

-1

Như thay thế, tôi đã tìm ra là để thêm addJavascriptInterface mỗi nút bấm hành động sự kiện cháy để JavascriptInterface

webView.addJavascriptInterface(new java2JSAgent(), "java2JSAgentVar"); //webView webview object 

public class java2JSAgent 
{ 
    @JavascriptInterface 
    public String getContacts() 
    { 
     String jsonResponse = "{result:'redirected'}"; 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       webView.loadUrl("file:///android_asset/index.html"); 
      } 
     }); 
     return jsonResponse; 
    } 
} 

có thể không phải là một phương pháp tốt, nhưng ít nhất làm việc :-) nó Cảm ơn

0

Có vài vấn đề ở đây.

  1. Từ Android mới nhất, WebView và Chrome Client là ứng dụng được tách riêng có thể tự động cập nhật mà không có ý định của người dùng.

  2. Từ Chrome x> = 25 phiên bản, họ đã thay đổi cách tải url đang hoạt động trong ứng dụng Android đang sử dụng thành phần webview. https://developer.chrome.com/multidevice/android/intents Hình như họ đang chặn thay đổi url mà không sử dụng cử chỉ và phóng từ JavaScript giờ

Giải pháp ở đây là để buộc người sử dụng để kích hoạt thay đổi URL, ví dụ trên nút bấm.

Ngoài ra, bạn có thể ghi đè phương thức được đề cập ở trên "shouldOverrideUrlLoading" trong ứng dụng WebView.

5

này đã làm việc cho tôi:

webView.setWebViewClient(new WebViewClient()); 
Các vấn đề liên quan