Android – Manejo de la conexión apn cambiante

Me preguntaba cómo Android está haciendo eso.

Ejemplo :

  1. WAP Push indica un MMS entrante.
  2. Cambiar APN a MMS.
  3. Descargar MMS.
  4. Restaure la conectividad con el APN predeterminado.

Entonces, ¿cómo se hace este cambio de APN?

Por qué : Quiero utilizar otro APN para conectarse a Internet en lugar del predeterminado o MMS APN.

One Solution collect form web for “Android – Manejo de la conexión apn cambiante”

Actividad siguiente resuelve su problema de cambiar APN predeterminado y volver a original.

package com.slk.apnapp; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.database.SQLException; import android.net.Uri; import android.os.Bundle; import android.telephony.TelephonyManager; import android.util.Log; public class NewAPNActivity extends Activity { /* * Information of all APNs Details can be found in * com.android.providers.telephony.TelephonyProvider */ public static final Uri APN_TABLE_URI = Uri .parse("content://telephony/carriers"); /* * Information of the preferred APN */ public static final Uri PREFERRED_APN_URI = Uri .parse("content://telephony/carriers/preferapn"); private static final String TAG = "CHANGE_APN"; public static final String NEW_APN = "NewAPN"; private int getDafaultAPN() { Cursor c = this.getContentResolver().query(PREFERRED_APN_URI, new String[] { "_id", "name" }, null, null, null); int id = -1; if (c != null) { try { if (c.moveToFirst()) id = c.getInt(c.getColumnIndex("_id")); } catch (SQLException e) { Log.d(TAG, e.getMessage()); } c.close(); } return id; } /* * Set an apn to be the default apn for web traffic Require an input of the * apn id to be set */ public boolean setDefaultAPN(int id) { boolean res = false; ContentResolver resolver = this.getContentResolver(); ContentValues values = new ContentValues(); // See /etc/apns-conf.xml. The TelephonyProvider uses this file to // provide // content://telephony/carriers/preferapn URI mapping values.put("apn_id", id); try { resolver.update(PREFERRED_APN_URI, values, null, null); Cursor c = resolver.query(PREFERRED_APN_URI, new String[] { "name", "apn" }, "_id=" + id, null, null); if (c != null) { res = true; c.close(); } } catch (SQLException e) { Log.d(TAG, e.getMessage()); } return res; } private int checkNewAPN() { int id = -1; Cursor c = this.getContentResolver().query(APN_TABLE_URI, new String[] { "_id", "name" }, "name=?", new String[] { NEW_APN }, null); if (c == null) { id = -1; } else { int record_cnt = c.getCount(); if (record_cnt == 0) { id = -1; } else if (c.moveToFirst()) { if (c.getString(c.getColumnIndex("name")).equalsIgnoreCase( NEW_APN)) { id = c.getInt(c.getColumnIndex("_id")); } } c.close(); } return id; } public int addNewAPN() { int id = -1; ContentResolver resolver = this.getContentResolver(); ContentValues values = new ContentValues(); values.put("name", NEW_APN); values.put("apn", NEW_APN); /* * The following three field values are for testing in Android emulator * only The APN setting page UI will ONLY display APNs whose 'numeric' * filed is TelephonyProperties.PROPERTY_SIM_OPERATOR_NUMERIC. On * Android emulator, this value is 310260, where 310 is mcc, and 260 * mnc. With these field values, the newly added apn will appear in * system UI. */ values.put("mcc", "310"); values.put("mnc", "260"); values.put("numeric", "310260"); Cursor c = null; try { Uri newRow = resolver.insert(APN_TABLE_URI, values); if (newRow != null) { c = resolver.query(newRow, null, null, null, null); // Obtain the apn id int idindex = c.getColumnIndex("_id"); c.moveToFirst(); id = c.getShort(idindex); Log.d(TAG, "New ID: " + id + ": Inserting new APN succeeded!"); } } catch (SQLException e) { Log.d(TAG, e.getMessage()); } if (c != null) c.close(); return id; } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int id = checkNewAPN(); int default_id = getDafaultAPN(); if (id == -1) { id = addNewAPN(); } if (setDefaultAPN(id)) { Log.i(TAG, NEW_APN + " set new default APN successfully and Default id is " + id); } if (setDefaultAPN(default_id)) { Log.i(TAG, NEW_APN + " set previous default APN successfully and Default id is " + default_id); } } } 
  • OSMDroid Carga de azulejos fuera de línea personalizados de la carpeta de activos
  • Android: ¿Cómo obtener la encriptación Wifi actual?
  • ¿Cómo saber que la conexión a Internet existe o no?
  • Android: ¿Cómo funciona la aplicación AirDroid?
  • Conexión de dos dispositivos mediante libgdx
  • Forzar Android a utilizar la red Wifi sin Internet
  • Excepción HTTPS de Android Restablecimiento de la conexión por pares
  • Cuándo comprobar la conexión a Internet en aplicaciones móviles
  • Conectarse a la red wifi en android, devolver si la contraseña es incorrecta
  • Problema de conexión a Internet lenta en android
  • Android Problema de conexión múltiple de Bluetooth?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.