проблема с кешем iandroid webview при входе в систему - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть простое приложение для веб-проекта для моего сайта

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

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

можно ли отключить кеширование для определенных ссылок?если я отключаю кеширование страницы входа в систему, проблема решается ,,,

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.navigationdrawer);
    drawerLayout = findViewById(R.id.drawer);

    navigationView = findViewById(R.id.navigationviwe);

    swipeLayout = findViewById(R.id.swipe);
    swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {


        @Override
        public void onRefresh() {

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    check();

                    webView.reload();
                    swipeLayout.setRefreshing(false);
                }
            }, 1000);
        }
    });

    Pushe.initialize(this, true);
    navcolor();

    if (savedInstanceState == null) {
        webView = findViewById(R.id.webview);

        webView.loadUrl("http://archclub.ir/login");
    }

    webView = findViewById(R.id.webview);
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
   webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    webView.getSettings().setAppCacheEnabled(true);
    webView.getSettings().setSavePassword(true);
    webView.getSettings().setSaveFormData(true);
    webView.getSettings().setEnableSmoothTransition(true);

    webView.getSettings().setDomStorageEnabled(true);
    Intent intent = getIntent();
    Uri data = intent.getData();

    check();

    if (data != null) {
        webView.loadUrl(data.getScheme() + "://" + data.getHost() + data.getPath());
    } else {
        webView.loadUrl("http://archclub.ir/login");
    }


    webView.setWebViewClient(new WebViewClient() {


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

            Toast.makeText(MainActivity.this, webView.getUrl(), Toast.LENGTH_SHORT).show();
            check();
            String ex = webView.getUrl();
            if (url.contains("archclub_bot")) {
                Intent telegram = new Intent(Intent.ACTION_VIEW, Uri.parse("https://telegram.me/archclub_bot"));
                startActivity(telegram);
                webView.loadUrl(ex);
            } else if (url.contains("https://www.instagram.com/")) {

                Toast.makeText(MainActivity.this, "Instagram page...", Toast.LENGTH_SHORT).show();
                openInstagramIntent(MainActivity.this, "archclub.ir");
                webView.loadUrl(ex);


            }


            return false;
        }
    });


    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            int id = item.getItemId();
            switch (id) {
                case R.id.menu1:
                    Toast.makeText(MainActivity.this, "صفحه نخست...", Toast.LENGTH_SHORT).show();
                    drawerLayout.closeDrawer(Gravity.RIGHT);
                    webView.loadUrl("http://archclub.ir/");
                    break;
                case R.id.menu2:
                    String ex = webView.getUrl();

                    Toast.makeText(MainActivity.this, "Instagram page...", Toast.LENGTH_SHORT).show();
                    openInstagramIntent(MainActivity.this, "archclub.ir");
                    webView.loadUrl(ex);
                    break;

                case R.id.menu3:
                    MainActivity.super.onBackPressed();
                    break;
                case R.id.menu4:
                    Toast.makeText(MainActivity.this, "tlgrm:@alihushi", Toast.LENGTH_LONG).show();
                    break;
            }
            return true;
        }
    });
}


@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    webView.saveState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    webView.restoreState(savedInstanceState);
}


public void onBackPressed() {
    if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {

        drawerLayout.closeDrawer(Gravity.RIGHT);
    } else {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();

        }
    }

}

public void navcolor() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));
    }
}

void check() {

    final String ex = webView.getUrl();

    final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    if (conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED
            || conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {

    } else if (conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.DISCONNECTED
            || conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.DISCONNECTED) {

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                .setCancelable(false)
                .setMessage("دسترسی به اینترنت وجود ندارد!")
                .setPositiveButton("خروج", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        android.os.Process.killProcess(android.os.Process.myPid());
                        System.exit(1);

                    }
                })
                .setNegativeButton("تلاش مجدد", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED
                                || conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
                            webView.loadUrl(ex);
                        }
                        check();

                    }
                });
        builder.create().show();

    }
}

public static void openInstagramIntent(Context context, String instagramID) {

    Uri uri = Uri.parse("http://instagram.com/_u/archclub.ir");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);

    intent.setPackage("com.instagram.android");

    try {
        context.startActivity(intent);
    } catch (ActivityNotFoundException e) {
        context.startActivity(new Intent(Intent.ACTION_VIEW,
                Uri.parse("http://instagram.com/archclub.ir")));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...