我在加载我的网站的webview上工作。 但我的问题与'分享'按钮一起使用 - 他们的网址不是合法的。 我试图通过应用程序解决这个问题,但我的代码有问题: 我不知道检查设备上是否安装了应用程序。 我的问题是,当点击分享的应用程序不是instll时,应用程序就会停止。
这里是我的代码:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// HERE YOU GET url
ProgressBar PB1 = (ProgressBar) findViewById(R.id.progressBar2);
PB1.setVisibility(View.VISIBLE);
if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
return super.shouldOverrideUrlLoading(view, url);
} else {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
browser("javascript:window.location.reload(true)");
return true;/// super.shouldOverrideUrlLoading(view, url);
}
/*Toast.makeText(getParent(), "no app found to open this link!", Toast.LENGTH_LONG).show();
return super.shouldOverrideUrlLoading(view, url);*/
}
答案 0 :(得分:0)
public boolean shouldOverrideUrlLoading(WebView view, String url) {
try{
// HERE YOU GET url
ProgressBar PB1 = (ProgressBar) findViewById(R.id.progressBar2);
PB1.setVisibility(View.VISIBLE);
if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
return super.shouldOverrideUrlLoading(view, url);
} else {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
browser("javascript:window.location.reload(true)");
return true;/// super.shouldOverrideUrlLoading(view, url);
}
}
catch(Exception ignored){
Toast.makeText(getParent(), "no app found to open this link!",
Toast.LENGTH_LONG).show();
}
return super.shouldOverrideUrlLoading(view, url);
}
可以这样做
答案 1 :(得分:0)
添加一个utils来判断此应用程序是否存在。 (你需要AndroidManifest.xml中的条件)
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
appInfos = packageManager.queryIntentActivities(mainIntent, 1);
答案 2 :(得分:0)
在开始意图之前添加以下检查:
// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
view.getContext().startActivity(intent);
} else{
Toast.makeText(getParent(), "no app found to open this link!", Toast.LENGTH_LONG).show();
}