THẢO LUẬN

đơn giản nhỉ, nhưng bạn biết cách tải video Instagram chưa? mình phát hiện trang này https://downloader2x.com/vn/

0
thg 9 5, 2022 11:08 SA

e bị lỗi này dù đã login bằng tài khoản npm là sao ạ ?image.png

0

ad sai chính tả 😦 làm e khóc thét : ls node_mobudels/.bin => ls node_modules/.bin

0
thg 9 5, 2022 8:35 SA

Khi nào thì có bản cập nhật mới ạ.

0
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
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í