Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create Network Access Point Name with code,

Tags:

android

3g

gprs

apn

I want to create APN by code, is there any support in Android SDK, i have tried a lot but not succeed,I found some info related to this http://blogs.msdn.com/b/zhengpei/archive/2009/10/13/managing-apn-data-in-google-android.aspx i made a class using this reference but not able to do anything,can any please give the solution for this???? Thanks

like image 685
Sandeep Avatar asked Aug 31 '11 13:08

Sandeep


People also ask

What are APN codes?

The Access Point Name (APN) defines the network path for all cellular data connectivity. Some carriers require you to enter your APN settings to set up your cellular service.

What is APN username and password?

Generally speaking, the APN you configure determines the IP address that your Opengear device is assigned. In most cases, to configure your cellular modem to connect to your carrier the only information required is the APN and sometimes a username and password – all other fields may be left at their defaults.

What is APN user name?

An Access Point Name (APN) is a gateway between a GSM, GPRS, 3G or 4G mobile network and another computer network, frequently the public Internet. A mobile device making a data connection must be configured with an APN to present to the carrier.


2 Answers

I will give some examples:

Getting default APN information:

//path to APN table
final Uri APN_TABLE_URI = Uri.parse("content://telephony/carriers");

//path to preffered APNs
final Uri PREFERRED_APN_URI = Uri.parse("content://telephony/carriers/preferapn");

//receiving cursor to preffered APN table
Cursor c = getContentResolver().query(PREFERRED_APN_URI, null, null, null, null);

//moving the cursor to beggining of the table
c.moveToFirst();

//now the cursor points to the first preffered APN and we can get some
//information about it
//for example first preffered APN id    
int index = c.getColumnIndex("_id");    //getting index of required column
Short id = c.getShort(index);           //getting APN's id from

//we can get APN name by the same way
index = c.getColumnIndex("name");
String name = c.getString(index); 

//and any other APN properties: numeric, mcc, mnc, apn, user, server,
//password, proxy, port, mmsproxy, mmsport, mmsc, type, current

To define new APN:

//first we have to create a new row in APN table
int id = -1;
ContentResolver resolver = this.getContentResolver();
ContentValues values = new ContentValues();

//create value, you can define any other APN properties in the same way
values.put("name", "Your APN Name");    //choose APN name, like 3G Orange
values.put("apn", "Your APN address");  //choose APN address, like cellcom.wapu.co.il

//now we have to define APN setting page UI. You have to get operator numeric property
//you can obtain it from TelephonyManager.getNetworkOperator() method
values.put("mcc", "your operator numeric high part");  //for example 242
values.put("mnc", "your operator numeric low part");   //for example 501
values.put("numeric", "your operator numeric");        //for example 242501

Cursor c = null;
try
{
    //insert new row to APN table
    Uri newRow = resolver.insert(APN_TABLE_URI, values);
    if(newRow != null)
    {
        c = resolver.query(newRow, null, null, null, null);

        //obtain the APN id
        int index = c.getColumnIndex("_id");
        c.moveToFirst();
        id = c.getShort(index);
    }
}
catch(Exception e)
{
}

//now after we created a new APN in APN table
//and APN's ID stored in id variable (or -1 if any troubles was happaned)
//we can define a new APN as default
values = new ContentValues();
values.put("apn_id", id); 

try
{
    resolver.update(PREFERRED_APN_URI, values, null, null);
}
catch (Exception e)
{
}

so, it have to work, but if it not - tell me and I will try to examine problems.

like image 113
Borg8 Avatar answered Oct 04 '22 10:10

Borg8


@Borg8 Thanks, you helped me a lot, this is what I missed, at first I could not see the new APN at the UI list. I found my answer at @DeepSan above link here.

To see the new APN that I just created in the ** emaltor ** UI, I use the 310260 numric number

// TelephonyProperties;
    values.put("mcc", "310");
    values.put("mnc", "260");
    values.put("numeric", "310260");

To See It on my Device(Galaxy) I Used the TelephonyManager:

  TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    String networkOperator = tel.getNetworkOperator();
    int mcc = 0;
    int mnc = 0;
    if (networkOperator != null) {
          mcc = Integer.parseInt(networkOperator.substring(0, 3));
          mnc = Integer.parseInt(networkOperator.substring(3));
    }

   // TelephonyProperties;
    values.put("mcc", mcc );
    values.put("mnc", mnc );
    values.put("numeric",networkOperator);

Now I can see the new APN on the UI.

like image 28
ZoharAdar Avatar answered Oct 04 '22 08:10

ZoharAdar