невозможно обнаружить Inte rnet in android - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть фрагмент, который имеет WebView, все работает нормально, но мне нужно добавить функцию, где, если нет Inte rnet фрагмент должен отображать сообщение об ошибке с кнопкой повторить попытку, по некоторым причинам моя попытка снова кнопка не работает.

вот мой код:

NewsFragment.java
public final class NewsFragment extends Fragment {

    private WebView mWebView;
    private ImageView img;
    private Button btnTryAgain;
    private LinearLayout mLinearLayout;
    private ConnectivityManager conMgr;
    private NetworkInfo networkInfo;
    .
    .
    .

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_news,container,false);
    }

    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        ((AppCompatActivity) getActivity()).getSupportActionBar().hide();

        //Initialization of the above declared variables
        mWebView = getView().findViewById(R.id.webView);
        img = getView().findViewById(R.id.img404);
        btnTryAgain = getView().findViewById(R.id.btnTryAgain);
        mLinearLayout = getView().findViewById(R.id.linearLayout404);

        //Checking if user is connected to the internet or not.
        conMgr = (ConnectivityManager) getActivity()
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        networkInfo = conMgr.getActiveNetworkInfo();

        //this is will work everytime the fragment is called or in onResume()
        //if INTERNET connected
        if (isConnected()) {
            mWebView.setWebViewClient(new WebViewClient());
            mWebView.loadUrl("https://news.google.com/");
        } else { //if INTERNET not connected
            mLinearLayout.setVisibility(View.VISIBLE);
            mWebView.setVisibility(View.GONE);
        }

        //TryAgain Button Event handling
        btnTryAgain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (isConnected()) {
                    mLinearLayout.setVisibility(View.GONE);
                    mWebView.setVisibility(View.VISIBLE);
                    mWebView.setWebViewClient(new WebViewClient());
                    mWebView.loadUrl("https://news.google.com/");
                    Toast.makeText(getContext(), "Connected!", Toast.LENGTH_SHORT).show();
                } else { //if INTERNET not connected
                    Toast.makeText(getContext(), "No Internet :(", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
    }
    public boolean isConnected(){
        if (networkInfo != null && networkInfo.isConnected())
            return true;
        else
            return false;
    }
}

Пожалуйста, помогите мне, я новичок в android

1 Ответ

1 голос
/ 17 февраля 2020

Используйте это разрешение:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

И используйте этот метод:

ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || 
        connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
    return true;
} else {
    return false;
}
...