Detect Data roaming in Android Application


You may want to know if the internet connection (data) is in roaming or not for the Android Application that you are working on. This can be done using ConnectivityManager class.

Example: CheckNetworkRoaming.java

package com.code2care.networkdetection;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class CheckNetworkRoaming {
    // checkNetworkType detects what Network Connection type is active
    public String checkRoaming(Context context) {
        ConnectivityManager connManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
        if (networkInfo == null || !networkInfo.isConnected()) {
            return "no Connection";
        } else {
            NetworkInfo networkType = connManager.getActiveNetworkInfo();
            return "" + networkType.isRoaming();
        }
        
    }
    
}

NetworkRoamingMainActivity.java.java

package com.example.networkdetection;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class NetworkMainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_network_main);
        CheckNetworkRoaming ck = new CheckNetworkRoaming();
    
        Toast.makeText(this,
                "Data Roaming : " +ck.checkRoaming(this) ,
                Toast.LENGTH_LONG).show();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.network_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Note: Remember to add user permission: android.permission.ACCESS_NETWORK_STATE to Android Manifest.

In order to test this functionality, you can turn data roaming on/off for your Android Emulator using DDMS tools.

Go to DDMS Perspective and goto Emulator Control tab and under Data dropdown select roaming to turn it on.