THẢO LUẬN

thg 9 5, 2022 7:14 SA

Đợi từ từ bác ơi. Tạm thời bác ghé blog của mình tại https://thanhle.blog để đọc các bài khác đi ạ

0

Cảm ơn anh đã chia sẻ, bài viết hay quá!

0
thg 9 5, 2022 6:46 SA

Quá chi tiết! Cảm ơn bác chủ nhé!

0

hình như a nhầm đoạn này "Chạy đoạn script trên và mở trình duyệt của bạn tại địa chỉ localhost:4000 bạn sẽ thấy output sau:" phải k nó là port 3000 đúng không ạ

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 9 5, 2022 4:36 SA

Mình gửi main activity bạn xem giúp mình nhé. Đường link trong webview mình trỏ sang Chrome ạ package standing.wap.alocredit;

import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ProgressBar; import android.widget.RelativeLayout;

import androidx.appcompat.app.AppCompatActivity; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

public class MainActivity extends AppCompatActivity {

private WebView web;
String webUrl = "https://dautunghiduong.com.vn/";
private ProgressBar progressBar;

private SwipeRefreshLayout swipeRefreshLayout;

RelativeLayout relativeLayout;
Button NointernetBtn;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    web = (WebView) findViewById(R.id.myweb);
    web.loadUrl(webUrl);

    WebSettings mywebsettings = web.getSettings();
    mywebsettings.setJavaScriptEnabled(true);


    web.setWebViewClient(new WebViewClient(){

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

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

    //improve webview perfomance

    web.getSettings().setAllowFileAccess(true);
    web.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    web.getSettings().setAppCacheEnabled(true);
    web.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    mywebsettings.setDomStorageEnabled(true);
    mywebsettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
    mywebsettings.setUseWideViewPort(true);
    mywebsettings.setSavePassword(true);
    mywebsettings.setSaveFormData(true);
    mywebsettings.setEnableSmoothTransition(true);
    

    //progress bar
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    web.setWebChromeClient(new WebChromeClient() {

        @Override
        public void onProgressChanged(WebView view, int progress) {
            progressBar.setProgress(progress);

            if (progress < 100 && progressBar.getVisibility() == ProgressBar.GONE) {
                progressBar.setVisibility(ProgressBar.VISIBLE);
            }
            if (progress == 100) {
                progressBar.setVisibility(ProgressBar.GONE);
            }
        }
    });

    //pull to refresh

    swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe);
    swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            swipeRefreshLayout.setRefreshing(true);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    swipeRefreshLayout.setRefreshing(false);
                    web.reload();
                }
            }, 1500);
        }
    });

    swipeRefreshLayout.setColorSchemeColors(
            getResources().getColor(android.R.color.holo_blue_dark),
            getResources().getColor(android.R.color.holo_orange_dark),
            getResources().getColor(android.R.color.holo_green_dark),
            getResources().getColor(android.R.color.holo_red_dark)
    );

    //internet connection

    NointernetBtn = (Button) findViewById(R.id.btnRetry);
    relativeLayout = (RelativeLayout) findViewById(R.id.nointernet);

    internetcheck();

    NointernetBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            internetcheck();
        }
    });

}

@Override
public void onBackPressed() {
    if (web.canGoBack()) {
        web.goBack();
    } else {
        super.onBackPressed();
    }
}

public void internetcheck(){

    ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mobiledata = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if(mobiledata.isConnected()){
        web.setVisibility(View.VISIBLE);
        swipeRefreshLayout.setVisibility(View.VISIBLE);
        relativeLayout.setVisibility(View.GONE);
        web.reload();

    }

    else if(wifi.isConnected()){

        web.setVisibility(View.VISIBLE);
        swipeRefreshLayout.setVisibility(View.VISIBLE);
        relativeLayout.setVisibility(View.GONE);
        web.reload();

    }

    else{

        web.setVisibility(View.GONE);
        swipeRefreshLayout.setVisibility(View.GONE);
        relativeLayout.setVisibility(View.VISIBLE);
        
    }
}

}

0

@haipq bạn ơi cho mình xin số điện thoại được không???

0

Chất lượng bài viết quá kém, dịch word by word lung tung.

0
thg 9 5, 2022 3:37 SA

@cuaong222 mình đoán thôi có thể state là true/false nên dễ bị như thế. ví khi get đc network info or lắng nghe nó thì mất khoảng time. bạn hay làm state dạng string hay enum xem sao

  • loading: trạng tái ban đầu chưa biết có mạng hay chưa
  • connected: đã có mạng
  • disconnected: mất mạng Như logic trên ban đầu init của bạn có thể đang là disconnected. H dùng 3 trạng thai này đủ cover
0
Avatar
đã bình luận cho bài viết
thg 9 5, 2022 3:16 SA

chắc chủ thớt thiếu cái này á b

0

rồi sau này nó support tốt hơn thì thay thế thôi.

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 9 5, 2022 2:47 SA

Cảm ơn bạn, mình code app Android. Hôm qua mình đã làm được rồi, nhưng còn một phần nhỏ. Lúc mình tắt mạng đi load lại webview thì đã hiện giao diện No Internet mình đã thiết kế. Nhưng khi bật mạng và reload lại, trong lúc chuẩn bị load lại màn hình chính thì trong 1, 2 giây load đấy nó vẫn hiện màn hình mặc đình Err.internet.disconected của Android.

0

Bạn dùng thử Firebase xem 😃

0
thg 9 5, 2022 1:17 SA

Phần 2 đâu bác ơi 😄

0
Avatar
đã bình luận cho bài viết
thg 9 4, 2022 5:23 CH

Cùng thắc mắc với bác

0
thg 9 4, 2022 3:43 CH

bài viết rất tâm huyết, cảm ơn anh :3

0
thg 9 4, 2022 3:28 CH

hay quá bạn ơi ❤️

0
thg 9 4, 2022 3:10 CH

Anh ơi a có phần TLS 1.3 này chi tiết hơn nữa khôn ạ

0
thg 9 4, 2022 2:05 CH

Giải mã giấc mơ mơ thấy bạn cùng lớp ? Bạn bè là những người cùng học cùng chơi với bạn. Đây là tất cả những khuôn mặt bạn thường thấy. Vì vậy nếu một ngày bạn mơ thấy người bạn cùng lớp của mình thì đó là điều hoàn toàn bình thường. Nguyên nhân của giấc mơ thấy bạn bè cùng lớp hoặc mơ thấy bạn học này được cho là những hình ảnh quen thuộc tái hiện bên trong giấc mơ. Nhưng cũng có thể đó là người mà bạn sắp gặp lại trong tương lai hoặc bạn có tình cảm đặc biệt với người này. Bạn có thể xem https://thabet999.com/

Về mặt tâm linh những giấc mơ thấy bạn cùng lớp hoặc mơ thấy bạn học thường là điềm lành. Trong những giấc mơ này, chúng cũng được coi là ẩn chứa điềm báo về tương lai cho bạn. Nhưng nếu bạn muốn biết nó có ý nghĩa gì hay giấc mơ này báo hiệu một con số rắc rối nào đó thì bạn nên xem trong giấc mơ của mình sẽ xảy ra những sự kiện gì nhé

Mơ thấy bạn cùng lớp mang điềm báo tốt hay xấu? Mơ thấy bạn cùng lớp của mình đến thăm nhà Trong giấc mơ, bạn thấy bạn cùng lớp của mình đến thăm nhà: thì đây chính là dấu hiệu cho biết đường tình duyên của bạn có sự khởi sắc.

Nếu còn độc thân: khả năng cao bạn sẽ gặp được một nửa của mình, đồng thời tình yêu của bạn sẽ nhanh chóng mặn nồng và hai người ngày càng thấu hiểu nhau hơn.

Mơ thấy bạn cùng lớp và mình cùng nhau đi du lịch Nếu bạn thấy bạn cùng lớp và mình cùng nhau đi du lịch: là tin vui với bạn. Sắp tới bạn sẽ nhận được nhiều tin tốt lành và điềm may mắn. Để biết thêm thông tin vui lòng truy cập La Nguyễn Trúc Nhi

0

Thể thức vòng loại World Cup 2022 châu á Theo sự công bố kết quả của FIFA được phân bổ như sau. Châu Á đã may mắn giành về cho mình 4.5 suất tham dự thi đấu vòng chung kết World Cup 2022. Có thể hiểu rằng,12 đội tuyển lọt vào vòng loại thứ 3 World Cup khu vực châu Á cũng sẽ có được cho mình chiếc vé dự vòng chung kết Asian Cup 2023. Đội tuyển nước nhà của chúng ta năm nay cũng có những gặt hái lớn, Đội tuyến Việt Nam đã làm nên lịch sử khi lần đầu tiên góp mặt ở vòng loại thứ 3 World Cup 2022 khu vực châu Á, được vinh danh nằm trong nhóm 12 đội tuyển xuất sắc nhất châu lục mang tư hào về cho đất nước. Tuy nhiên, Các thầy trò huấn luyện viên Park Hang Seo sẽ phải đối mặt với thử thách đầy chông gai ở bảng B đấu với đội tuyến hùng mạnh của các nước châu lục. Ở thể thức vòng loại World Cup 2022 châu á, 12 đội tuyển lọt vào vòng loại cuổi cùng của World Cup 2002 khu vực châu Á được chia thành 2 bảng. Bạn có thể xem tại đây Với hình thức 6 đội / bảng, thi đấu vòng tròn 2 lượt đi và về. Đội tuyển nước nhà của chúng ta Việt Nam rơi vào nhóm 6. Vì vậy, Việt Nam và Liban là hại đội bóng có thứ hạng thấp nhất trên bảng xếp hạng FIFA. Theo thể thức vòng loại World Cup 2022 châu á hai đội đứng đầu mỗi bảng sẽ mang về trực tiếp cho mình chiếc vé vinh dự đại diện cho châu Á tham dự vòng chung kết World Cup 2022. Và nếu hai đội đứng thứ 3 của mỗi bảng đấu sẽ chạm trán với nhau, tranh suất chơi trận play-off với đại diện của châu lục khác để giành tấm vé cuối cùng đến Qatar dự vòng chung kết World Cup 2022. Thể thức vòng loại World Cup 2022 châu á ở vòng loại thứ 3 World Cup 2022 sẽ bắt đầu diễn ra từ ngày 2/9/2021 và kết thúc vào ngày 29/3/2022. Chính vì thế có thể nói rằng, đây chính là thử thách lớn vì thật sự vòng loại thứ 3 World Cup 2022 khu vực châu Á đòi hỏi mỗi đội phải kiên trì tập luyện, dốc hết cố gắng thi đấu nếu muốn góp mặt ở đấu trường thế giới. Theo như thông tin Thabet999 cập nhật về thể thức vòng loại World Cup 2022 châu á, thì Liên đoàn Bóng đá châu Á (AFC) và Liên đoàn Bóng đá Thể giới (FIFA) đã đưa ra các quyết định về các trận đấu tại vòng loại thứ 3 World Cup sẽ thi đấu với hình thức theo thể thức sân nhà, sân khách, hoàn toàn nói không với thi đấu tập trung như những gì đã dư tính trước đó. Một tin cực kì đặc biệt ở thể thức vòng loại World Cup 2022 châu á thuộc vồng loại thứ 3 là vòng đầu tiên có sự góp mặt của các đội tuyển hàng đầu châu Á. Đây là một cuộc hành trình cam go của các đội tuyển, việc được thi đấu trực tiếp với những đội bóng mạnh nhất châu Á ở một giải đấu chính thức vừa là một thử thách nhưng cũng đồng thời là một cơ hội rất quý giá đổi với đội tuyển Việt Nam. Nó mang cho mình một ý nghĩa và giá trị rất lớn về mặt hình ảnh, chuyên môn là cầu giúp cầu thủ Việt Nam tiếp tục có trải nghiệm thực tế, nâng cao trình độ chuyên môn, phát huy năng lực đế hướng đên mục tiêu xa hơn khi World Cup đã chính thức nâng lên 48 đội vào năm 2026.

Để biết thêm thông tin vui lòng truy cập La Nguyễn Trúc Nhi

0
thg 9 4, 2022 9:35 SA

Ý là những ứng dụng chỉ có thể chạy được trên Windows thôi nha bạn, chứ không phải ứng dụng chạy được trên Windows là không chuyển sang container được. Này bạn đọc khái niệm về container để hiểu rõ hơn nha, này mình có thể khi rõ ra nữa là linux container.

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí