Создайте имя точки доступа к сети с кодом,

Я хочу создать APN по коду, есть ли поддержка в Android SDK, я много пробовал, но безуспешно, я нашел некоторую информацию, связанную с этим http://blogs.msdn.com/b/zhengpei/archive/2009/10/13/managing-apn-data-in-google-android.aspx я создал класс, используя эту ссылку, но ничего не смог сделать, может ли кто-нибудь дать решение для этого???? Спасибо


person Sandeep    schedule 31.08.2011    source источник
comment
Эта ссылка на блог MSDN исчезла.   -  person James Moore    schedule 05.06.2020


Ответы (2)


Я приведу несколько примеров:

Получение информации об APN по умолчанию:

//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

Чтобы определить новый 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)
{
}

так что должно работать, а если нет - скажите мне и я постараюсь разобраться в проблемах.

person Borg8    schedule 28.10.2011
comment
кажется, ваш пример - это то, что я ищу, я попытался использовать ваш код с эмулятором ANDROID 2.2, сначала я добавил WRITE_APN_SETTINGS в файл манифеста, а затем попробовал его, первая часть отображения работы APN отличный. Но когда я попытался создать свой собственный APN, я не получаю никаких исключений, но я не вижу новый APN. Что я пропустил? Спасибо - person ZoharAdar; 24.11.2011
comment
@ZoharAdar: я думаю, вы определяете неправильные mcc, mnc и числовые значения. Они отвечают за отображение APN на странице пользовательского интерфейса. Вы можете получить правильные значения, используя метод TelephonyManager.getNetworkOperator(). числовое значение, которое вы получаете непосредственно из этого метода (например: numeric = 123210), а затем извлекаете из него значения mcc и mnc (в нашем примере: mcc = 123, mnc = 210). - person Borg8; 25.11.2011
comment
В Android 4 сторонние приложения больше не могут получать разрешение WRITE_APN_SETTINGS. Таким образом, вы будете получать исключение безопасности каждый раз, когда пытаетесь добавить, удалить или изменить APN. - person Borg8; 28.06.2012
comment
@ Borg8 Что такое числовой оператор? - person Karthik Balakrishnan; 05.08.2013
comment
numeric — это сочетание mcc и mnc вашего оператора сотовой связи. Здесь вы можете найти коды операторов сотовой связи: en.wikipedia.org/wiki/Mobile_country_code Для например, для оператора Orange Israel: mcc = 425, mnc = 01, поэтому числовое значение = 42501. - person Borg8; 07.08.2013

@ Borg8 Спасибо, вы мне очень помогли, это то, что я пропустил, сначала я не мог видеть новый APN в списке пользовательского интерфейса. Я нашел свой ответ в @DeepSan по ссылке выше здесь.

Чтобы увидеть новый APN, который я только что создал в пользовательском интерфейсе ** emaltor **, я использую числовой номер 310260.

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

Чтобы увидеть это на моем устройстве (Galaxy), я использовал 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);

Теперь я вижу новый APN в пользовательском интерфейсе.

person ZoharAdar    schedule 28.11.2011