1
我希望有人能指出我在哪里很厚。Android的webview问题与链接过滤
我打电话给一个webviewclient并重写加载,以捕获mailto链接(工作)和特定的外部URL(不工作)。具体的链接只是在浏览器中为非移动站点链接启动。我很想弄清楚这一点。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:")) {
url = url.replaceFirst("mailto:", "");
url = url.trim();
try {
url = URLDecoder.decode(url,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
int subjectStart = url.indexOf("subject=");
int subjectStop = url.indexOf("&body=");
String subject = url.substring(subjectStart,subjectStop);
subject = subject.replace("subject=", "");
String bod = url.substring(subjectStop);
bod = bod.replace("&body=", "");
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("test/plain");
i.putExtra(Intent.EXTRA_SUBJECT,subject);
i.putExtra(Intent.EXTRA_TEXT, bod);
startActivity(i);
return true;
} else if (url.contains("[EXTERNAL LINK I WANT TO OPEN IN BROWSER]") == true) {
//tried without intent and nothing
Uri uri = Uri.parse(url.toString());
Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(browserIntent);
return false; //tried true here too
} else {
view.loadUrl(url);
return true;
}
}
[...]
我试图打回真,返回false那里,我尝试了版本无意的浏览器。几乎所有的人都会在web浏览器中打开链接而不是浏览器,而那些没有做过的浏览器并没有做任何事情。
mailtos工作得很好,我在外部链接上缺少什么?
如果你需要它,这里是我如何调用webclient。
public class MyWebViewClient extends WebViewClient {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("[MY SITE]");
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.setWebViewClient(new MyWebViewClient()
{
public void onPageFinished(WebView view, String url) {
if (REFRESH_WEB ==1){
startScan();
REFRESH_WEB++;
}
}
});
尝试使用'Log'记录每个检索到的URL,并查看'contains()'调用出错的位置。 – CommonsWare 2011-04-19 20:24:42