我有一个简单的Webview应用程序可以加载我的网站。一切正常,但是当用户单击网页底部的Instagram图标时,我想打开Instagram应用程序,而不是加载Instagram网页。
我正在尝试通过shouldOverrideUrlLoading
函数和webview.geturl("https://www.instagram.com/")
实现这一目标。
问题是,当用户单击Instagram图标时,URL不变,并保持默认的“ http://archclub.ir/”。
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://archclub.ir/login");
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
url = webView.getUrl();
Toast.makeText(MainActivity.this, webView.getUrl(), Toast.LENGTH_SHORT).show();
if (url.contains("https://www.instagram.com/")) {
Toast.makeText(MainActivity.this, "salam", Toast.LENGTH_SHORT).show();
webView.loadUrl("http://archclub.ir/");
}
return false;
}
});
}}
我的问题是:当用户单击网站上的Instagram图标时,Toast.makeText(MainActivity.this, "salam", Toast.LENGTH_SHORT).show();
无法运行。
我已经检查过了。我已经调试了问题是单击Instagram图标时,webview.geturl
等于archclub.ir/login,并且没有更改为instagram.com,但Web视图显示了Instagram页面。
答案 0 :(得分:2)
您一遍又一遍地替换了网址。
请替换此代码块,而不是shouldOverrideUrlLoading
方法:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// url = webView.getUrl(); // just omit this line
Toast.makeText(ali.this, webView.getUrl(), Toast.LENGTH_SHORT).show();
if (url.contains("https://www.instagram.com/")) {
Toast.makeText(ali.this, "salam", Toast.LENGTH_SHORT).show();
webView.loadUrl("http://archclub.ir/");
return true;
} else return false;
}
});