【问题标题】:Store website cookies in Android Webview forever在 Android Webview 中永久存储网站 cookie
【发布时间】:2020-07-26 03:07:47
【问题描述】:

我想将我的网站 cookie 永久存储在我的 Android Webview Apk 中,这样用户就不必在每次启动应用程序时输入登录详细信息。请详细告诉我,因为我是初学者。任何帮助将不胜感激。

【问题讨论】:

    标签: android cookies webview


    【解决方案1】:

    此代码将为您提供帮助。请看一下(您也可以复制/粘贴代码)

    public class MessangerMainFragment extends Fragment{
        WebView telegram_web;
    
    public MessangerMainFragment() {
        // Required empty public constructor
    }
    
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        View v = inflater.inflate(R.layout.fragment_messanger_main, container, false);
        setupUI(v);
        init();
        return v;
    }
    
    public void init() {
        telegram_web.getSettings().setJavaScriptEnabled(true);
        telegram_web.getSettings().setLoadWithOverviewMode(true);
        telegram_web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        telegram_web.getSettings().setUseWideViewPort(true);
        telegram_web.getSettings().setDomStorageEnabled(true);
        telegram_web.setWebViewClient(new WebViewClient() {
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
    
                return true;
            }
    
            @Override
            public void onPageFinished(WebView view, final String url) {
                CookieSyncManager.getInstance().sync();
            }
        });
    
        telegram_web.loadUrl("https://web.telegram.org/#/im");
    
    }
    
    public void setupUI(View v) {
        telegram_web = v.findViewById(R.id.telegram_web);
        if (!UniversalUtility.isOnline(getContext()))
            UniversalUtility.handleFailureResponse("t.getMessage()", "messanger");
    
    }
    
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        CookieSyncManager.createInstance(getContext());
    }
    
    @Override
    public void onResume() {
        super.onResume();
        CookieSyncManager.getInstance().startSync();
    }
    
    @Override
    public void onPause() {
        super.onPause();
        CookieSyncManager.getInstance().stopSync();
    }
    
    @Override
    public void onDetach() {
        super.onDetach();
        getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    }
    

    }

    【讨论】:

    • 感谢您的帮助。你能告诉我保存 cookie 的唯一代码行吗?这对我有很大帮助。
    • CookieSyncManager 行是强制性的...(在 onCreate、onPause、onResume 和 Client - OnPageFinished 中)下面的代码也是强制性的... telegram_web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); telegram_web.getSettings().setDomStorageEnabled(true);
    猜你喜欢
    • 2012-01-13
    • 2015-08-24
    • 2017-11-03
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多