2011-11-05 22 views
9

¿Hay alguna manera de que pueda acceder a la otra tarjeta SIM en mi Android? Tengo un android Cherry Mobile Orbit que es un teléfono Android sim doble. Quiero desarrollar una aplicación de SMS para mi teléfono, pero solo se podrá acceder a la primera tarjeta SIM. Quiero acceder a la otra tarjeta SIM, de modo que cuando presiono enter para enviar el mensaje, aparecerá un mensaje que indique qué mensaje se enviará. Sé que es propreitario, pero el fabricante del teléfono no tiene comentarios al respecto. ¿Hay alguna otra manera? retoque o algo?Dual Sim Android

+0

eche un vistazo a mi código por el cual soy capaz de administrar qué SIM usar para enviar SMS: http: //stackoverflow.com/a/30677542/2267723 .. Espero que eso ayude –

+0

Aquí hay una solución completa para android 5 y anteriores http://stackoverflow.com/questions/27351936/how-to-send-a-sms-using-smsmanager-in-dual-sim-mobile/30677542#30677542 –

Respuesta

0

Oficialmente en este momento no hay API para esto, debe ponerse en contacto con el fabricante del dispositivo.

+0

gracias por los comentarios @Reno. todavía estoy esperando si hay algún ajuste a él. – bhadz

3

Creo que puede usar dex2jar o apktool para revertir esa aplicación que se ejecuta en dispositivos con doble tarjeta SIM, una vez que encuentre el "administrador de servicios", "administrador de telefonía", un apéndice de interfaz o algunas palabras clave como "Géminis" "puede usar Java Reflection, refleja todo el método de esta clase. Entonces puedes lograr este objetivo.

+0

¿podría darnos más detalles? @shanwu – gumuruh

+0

@gumuruh después de descompilar esas aplicaciones con dex2jar, intenta encontrar alguna clase llamada TelephonyMgr.java, deberías encontrar algo interesante después de comparar el código fuente de Android ~ – shanwu

+0

Mira esto: http://stackoverflow.com/questions/ 14517338/android-check-si-el-teléfono-es-dual-sim/17499889 # 17499889 –

0

Suponiendo que está desarrollando la aplicación para su propio teléfono, y está dispuesto a tomar la molestia de encontrar los ID (sim_id) asignados a cada una de sus tarjetas SIM (probablemente a través de las salidas de registro del teléfono, buscando para 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 realidad 'recoger' el SIM preferido), Esto debería funcionar.

No estoy del todo seguro de si este enfoque funcionaría para usted (aunque el código parece bastante 'estándar'); 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: Extrañamente, la solución dejó de funcionar inesperadamente después de algunas actualizaciones de la aplicación en la 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.)

Cuestiones relacionadas