检查设备上的app是否有意图

时间:2017-04-25 08:06:54

标签: android android-intent webview

我在加载我的网站的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);*/

        }

3 个答案:

答案 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();
}