Я хочу создать APN по коду, есть ли какая-либо поддержка в Android SDK, я много пробовал, но не смог, я нашел некоторую информацию, связанную с этим http://blogs.msdn.com/b/zhengpei/archive/2009/10/13/managing-apn-data-in-google-android.aspx Я сделал класс, используя эту ссылку, но не смог ничего сделать, может ли кто-нибудь дать решение для этого???? Благодаря
Создать имя точки доступа к сети с кодом,
Ответ 1
Я приведу несколько примеров:
Получение информации 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 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 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)
{
}
поэтому он должен работать, но если это не так - скажите мне, и я попытаюсь изучить проблемы.
Ответ 2
@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 в пользовательском интерфейсе.