2014-03-06 165 views
1

在我的应用程序中,我在webview中加载“http”url。这个URL加载正确,但是有一些内部URL用协议“sheet://”加载。加载这个URL时,我得到一个错误“不支持协议”。任何人都可以请帮助如何解决这个问题?如何使用协议“sheet://”加载网址?在webview中加载自定义网址

PS:我正在使用shouldOverrideUrlLoading方法来加载url。

这是代码我使用

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.contains("sheet://")){ 
      Intent url_intent = new Intent (Intent.ACTION_VIEW,Uri.parse(url)); 
      url_intent.addCategory(Intent.CATEGORY_BROWSABLE); 
      startActivity(url_intent); 
      return false; 
     }else{ 
       view.loadUrl(url); 
       return true; 
     } 
} 

感谢&问候,

+0

你是否试图在桌面浏览器中打开该URL? –

+0

是的,我试过了,它可以在桌面浏览器中运行 – VijayRaj

+0

看看[这里](http://stackoverflow.com/a/5514668/1777090)。这可能有帮助。 –

回答

0

也许举办一个PHP文件,用头?

<?php 
header("Location: sheet://link_to_your_file.extention"); 
?> 
+0

上链接到文件有http协议,但它在内部使用sheet://协议 – VijayRaj

0

您是否看到shouldOverrideUrlLoading来电:// URL?代码的这部分看起来是正确的(假设您的设备上安装了可以处理sheet:// BROWSABLE意图的应用程序)。或者,您的意思是从您的应用程序启动的应用程序无法加载工作表:// URL?正在启动什么应用程序来响应意图?

您遇到的一个错误是在URL中为:而不是时致电loadUrl。在这种情况下,请只需return true。 URL加载已在进行中,不需要再次启动它。这样做实际上造成了一个循环。

+0

我没有任何其他应用程序安装在我的设备..我试图加载工作表://URL在我的应用程序..我从代码中删除**意图**部分,只是返回false为表://url,但我得到“协议不支持” – VijayRaj

+0

那就是预期的。如果设备上没有任何东西来处理您的定制方案,那么它如何得到支持?您希望为表单网址加载什么内容?你是否想使用shouldInterceptRequest API来代替它,它允许你提供你自己的InputStream来响应请求? – ksasq

+0

我得到了这个工作:)我想知道如何获得一个返回值,当我在webview中加载一个JavaScript函数? – VijayRaj

0

你必须在AndroidManifest.xml中注册一个符合该协议的意图过滤器的活动