بسیاری از برنامه های که اکنون ما می نویسیم به ارتباط اینترنتی احتیاج دارند! چرا؟ تا مثلا نوتیفیکشن های ما را بروز کنند یا مطالب برنامه را به روز رسانی کنند یا حتا یک صفحه ثابت اینترنتی را برای لود کنند.

بنابراین باید بتوانیم تشخیص بدهیم که آیا به اینترنت متصل هستیم یا نه؟ و بعدا برای آن راه کاری بیاندیشیم. از کاربر بخواهیم به اینترنت وصل شود یا دیتای کش شده را نمایش دهیم.

برای بررسی اتصال به اینترنت در اندروید از کلاس ConnectivityManager استفاده می کنیم. این کلاس با متود getSystemService() صدا زده می شود و ما می توانیم کار را شروع کنیم.

با صدا زدن getAllNetworkInfo() همه اطلاعات لازم درباره اتصالات ما به صورت یک آرایه و به شکل NetworkInfo بازگردانده خواهد شد.

تذکر مهم : بخاطر داشته باشید که در مانیفست حتما باید اجازه دسترسی ACCESS_NETWORK_STATE را به برنامه بدهید!

internet

<?xml version=“۱٫۰” encoding=“utf-8”?>
<manifest xmlns:android=“http://schemas.android.com/apk/res/android”
    package=“thecrazyprogrammer.androidexample” >
    <uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” />
    <application
        android:allowBackup=“true”
        android:icon=“@mipmap/ic_launcher”
        android:label=“@string/app_name”
        android:theme=“@style/AppTheme” >
        <activity
            android:name=“.MainActivity”
            android:label=“@string/app_name” >
            <intent-filter>
                <action android:name=“android.intent.action.MAIN” />
                <category android:name=“android.intent.category.LAUNCHER” />
            </intent-filter>
        </activity>
    </application>
</manifest>

activity_main.xml

MainActivity.java

package thecrazyprogrammer.androidexample;
 
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button=(Button)findViewById(R.id.button);
    }
 
    public void buttonAction(View view) {
 
        //instantiate an object
        ConnectivityManager cm=(ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
 
        //get all networks information
        NetworkInfo networkInfo[]=cm.getAllNetworkInfo();
 
        int i;
 
        //checking internet connectivity
        for(i=0;i&lt;networkInfo.length;++i){
            if(networkInfo[i].getState()==NetworkInfo.State.CONNECTED){
                Toast.makeText(getApplicationContext(),"Internet Connected",Toast.LENGTH_LONG).show();
                break;
            }
        }
 
        if(i==networkInfo.length){
            Toast.makeText(getApplicationContext(),"Internet Not Connected",Toast.LENGTH_LONG).show();
        }
    }
}