Search code examples
android3ggprsapn

Create Network Access Point Name with code,


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


Solution

  • 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.