Android веб-просмотр не загружает данные сеанса - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть приложение android, которое загружает веб-сайт с помощью веб-просмотра. На целевой странице моего веб-сайта у меня есть форма, где пользователь вводит кодовый номер, в соответствии с этим кодовым номером, который я перенаправляю на конкретный c URL моего сайта. Который прекрасно работает на моем сайте. То, что было сделано, - это сохранение кода в сеансе с этим URL, и когда тот же пользователь снова загружает мой сайт, он автоматически перенаправляет его на эту страницу. Но когда я пробую этот сценарий, используя мое приложение android, кажется, что данные сеанса не работают Кто-нибудь может мне помочь?

Вот мой код:

package com.myPackageName;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Message;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    WebView myweb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myweb = findViewById(R.id.myWebView);

        WebSettings myWebSettings = myweb.getSettings();
        myWebSettings.setJavaScriptEnabled(true);
        myWebSettings.setSupportMultipleWindows(true);
        myWebSettings.setBuiltInZoomControls(true);
        myweb.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        myweb.getSettings().setAppCacheEnabled(true);

        myWebSettings.setDomStorageEnabled(true);
        myWebSettings.setSavePassword(true);
        myWebSettings.setSaveFormData(true);

        myweb.setWebViewClient(new MyWebViewClient());
        myweb.setWebChromeClient(new MyWebChromeClient());

        CookieSyncManager.createInstance(this);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);

        myweb.loadUrl("https://www.mywebsite.com");

    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    private class MyWebChromeClient extends WebChromeClient{
        @Override
        public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
            WebView newWebView = new WebView(MainActivity.this);
            view.addView(newWebView);
            WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
            transport.setWebView(newWebView);
            //transport.getWebView();
            resultMsg.sendToTarget();
            //Toast.makeText(MainActivity.this, WebView.HitTestResult , Toast.LENGTH_LONG).show();
            return true;
        }
    }

    @Override
    public void onBackPressed () {
        if (myweb != null && myweb.canGoBack())
            myweb.goBack();// if there is previous page open it
        else
            super.onBackPressed();//if there is no previous page, close app
    }
}

1 Ответ

1 голос
/ 29 апреля 2020

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

Чтобы преодолеть эту проблему, вы могли бы Сохраните ваши установленные куки, повторно внедрите их, когда запускаете новый экземпляр вашего веб-просмотра.

Справку о том, как получить куки, можно найти у нее: Чтение куки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...