WebView: Как загрузить файл .php в 8.0 WebView - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь загрузить файл .php в WebView.он работал должным образом до уровня API 28 после того, как я обновил до уровня API 28, он не работает, показывая белый экран.ничего не отображается, я перепробовал все варианты.

Вот код

Я добавил безопасный просмотр false в файле манифеста.Я попытался поиск в Google, ничего не помогло мне, если кто-нибудь сделал, пожалуйста, помогите в этом случае разрешить.

  String url="https://xxx/xxx/abc.php";
          @Override
        protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    handleSSLHandshake();
    WebView mWebView = (WebView) findViewById(R.id.webView);
   // PackageInfo webViewPackageInfo = null;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
     //   webViewPackageInfo = WebView.getCurrentWebViewPackage();
        mWebView.getSettings().setSafeBrowsingEnabled(false);
       // Log.d("MY_APP_TAG", "WebView version: " + webViewPackageInfo.versionName);
    }
    WebViewClientImpl webViewClient = new WebViewClientImpl(this);
    mWebView.setWebViewClient(webViewClient);
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    mWebView.getSettings().setBuiltInZoomControls(false);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl(url);


    if (18 < Build.VERSION.SDK_INT ){
        //18 = JellyBean MR2, KITKAT=19
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    }
}

   public class WebViewClientImpl extends WebViewClient {

    private Activity activity = null;

    public WebViewClientImpl(Activity activity) {
        this.activity = activity;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {

        webView.loadUrl(url);
        // Log.i(TAG,url);
        return true;

    }

    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);

    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);


    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

    }

    @Override
    public void onPageFinished(WebView view, String url) {


    }
}

1 Ответ

0 голосов
/ 11 декабря 2018

Я решил свою проблему.это были проблемы с сертификатами, я просто добавил следующий код, теперь он работает нормально

    @TargetApi(Build.VERSION_CODES.N)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }
   @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();
    } 
...