Por SMS:
Suponiendo que está desarrollando la aplicación para su propio teléfono, y que está dispuesto a pasar por la molestia de averiguar los ID (sim_id
) asignados a cada una de sus tarjetas SIM (probablemente a través de la comprobación salidas de registro del teléfono, la búsqueda de sim_id
, que fue lo que hice), puede utilizar el siguiente código para establecer el valor por defecto SIM para el envío de SMS:
int simId = <place desired SIM ID here>;
Intent simIntent = new Intent("android.intent.action.SMS_DEFAULT_SIM");
simIntent.putExtra("simid", simId);
sendBroadcast(simIntent);
en combinación con algunas otras cosas pronta interfaz de usuario (por en realidad 'escoger' la SIM preferida), esto es Haría el truco.
No estoy del todo seguro de si este enfoque funcionaría para usted (aunque el código parece ser independiente del fabricante); Lo descubrí con prueba y error en mi Mlais MX28 (con una ROM personalizada). Pero aún así vale la pena intentarlo, supongo. :)
ACTUALIZACIÓN: Curiosamente, la solución dejó de funcionar de forma inesperada después de algunos cambios a la aplicación que estaba trabajando. Pero me encontré con otra forma (que parece ser más prometedora). (Creo que esto se puede extender a otros escenarios de selección SIM, así como la configuración de caché contiene entradas con name
s gprs_connection_sim_setting
, voice_call_sim_setting
, video_call_sim_setting
y similares.)
ContentValues val = new ContentValues();
val.put("value", "here goes the preferred SIM ID");
getContentResolver().update(Uri.parse("content://settings/system"), val, "name='sms_sim_setting'", null);
(Por desgracia, esto requiere el permiso android.permission.WRITE_SETTINGS
.)
Puede utilizar la reflexión de Java para obtener múltiples detalles de la tarjeta SIM. [Aquí hay una muestra de cómo hacerlo] (http://stackoverflow.com/a/17499889/703851) –
Puede intentar usar la biblioteca 'MultiSim': http://stackoverflow.com/a/41544422/1665964 –