Android APN Enforcement - PullRequest
       15

Android APN Enforcement

3 голосов
/ 23 октября 2011

Кто-то знает, существует ли программный способ использования определенного определенного APN на устройстве, которое не является значением по умолчанию?

Спасибо.

Ответы [ 2 ]

11 голосов
/ 24 октября 2011

Вы можете программно запрашивать и устанавливать предпочтительный APN, используя uri content://telephony/carriers/preferapn. Чтобы установить новый предпочтительный APN, вы должны передать идентификатор базы данных существующей записи APN. Следующая функция может сделать это, если вы передаете отображаемое имя APN (например: setPreferredApn(context, "Giffgaff");)

public static final Uri APN_TABLE_URI = Uri.parse("content://telephony/carriers");
public static final Uri APN_PREFER_URI = Uri.parse("content://telephony/carriers/preferapn");

public static boolean setPreferredApn(Context context, String name) {
    boolean changed = false;
    String columns[] = new String[] { Carriers._ID, Carriers.NAME };
    String where = "name = ?";
    String wargs[] = new String[] {name};
    String sortOrder = null;
    Cursor cur = context.getContentResolver().query(APN_TABLE_URI, columns, where, wargs, sortOrder);
    if (cur != null) {
        if (cur.moveToFirst()) {
            ContentValues values = new ContentValues(1);
            values.put("apn_id", cur.getLong(0));
            if (context.getContentResolver().update(APN_PREFER_URI, values, null, null) == 1)
                changed = true;
        }
        cur.close();
    }
    return changed;
}

Полагаю, мне следует добавить, что вам нужно разрешение WRITE_APN_SETTINGS и вам необходимо импортировать android.provider.Telephony and android.provider.Telephony.Carriers

ОБНОВЛЕНИЕ ДЛЯ 4.0 +

Эта функция отключена с выпуском Android 4.0 (ICS). Включение разрешения WRITE_APN_SETTINGS никак не влияет на то, чтобы вы могли больше задавать APN. См. этот вопрос для некоторых соответствующих ссылок. На странице API теперь прямо указывается, что это разрешение не для внешнего использования и применяется внутри страны.

0 голосов
/ 23 октября 2011

Я не думаю, что есть способ, даже если он есть, оператор может уничтожить его обновлением программного обеспечения. Кроме того, для некоторых операторов связи, таких как AT & T в США, использование определенной APN обеспечивает определенную функциональность, например получение номера подписчика этого пользователя (его уникальный идентификатор, а не номер телефона). Поэтому может быть неуместно форсировать это изменение, так как оно повлияет на множество других приложений, установленных на телефоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...