Android App链接无法在WebView内运行

时间:2018-10-04 16:05:11

标签: android

Android error - webpage not available

当我尝试使用手机浏览器时,它将打开该应用程序。但不在应用程序Webview中。

public class WebViewPayNowFragment extends Fragment implements AdvancedWebView.Listener {
private View rootView;
private AdvancedWebView mWebView;
private String link, tid;

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        System.out.println("asdajsda : "+url);
        if (url != null && url.startsWith("ptcl://")) {
            view.getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }


}
public WebViewPayNowFragment() {

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = this.getArguments();
    if (bundle != null) {
        link = bundle.getString(Constants.LINK, null);
        tid = bundle.getString(Constants.TRANSACTION_ID, null);
        System.out.println("asdiahsdhakjshdkah : " + link);
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.fragment_web_view, container, false);
    mWebView = rootView.findViewById(R.id.webview);
    mWebView.setListener(getActivity(), this);
    mWebView.setWebViewClient(new MyBrowser());
    if (link != null) {
        String postData = null;
        try {
            postData = "TransactionID=" + URLEncoder.encode(tid, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        mWebView.postUrl(link, postData.getBytes());
    } else {

    }

    return rootView;
}

这是片段中的我的代码。 我创建了一个扩展WebViewClient的内部类。并设置setWebViewClient,但我仍然遇到问题。

1 个答案:

答案 0 :(得分:1)

解决方案:

我自己遇到了这种情况。这就是我所做的:

首先创建一个内部类,并使用WebViewClient对其进行扩展:

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    ....

    }
}

然后:

public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url != null && url.startsWith("ptcl://")) {
        view.getContext().startActivity(
            new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        return true;
    } else {
        return false;
    }
}

最后,

webView.setWebViewClient(new MyBrowser()); 

尝试一下,希望对您有所帮助。