Tenemos el hallazgo a esta escollo, o por lo menos eso creemos. Si presentas inquietudes puedes escribirlo en el apartado de preguntas, que sin dudarlo te responderemos
Solución:
Puede haber dos tipos diferentes de applets presentes en su tarjeta SIM.
Subprogramas comunes
Applets comunes escritos en JavaCard simple. Este es el tipo de applet al que está acostumbrado en el mundo de las tarjetas inteligentes comunes. tiene el process
El método y la tarjeta inteligente es el sujeto pasivo en la comunicación: su aplicación envía comandos APDU y las respuestas de la tarjeta.
Puede comunicarse con estos applets usando un conjunto especial de bibliotecas de Android llamado SEEK para Android. Eche un vistazo a este tutorial para aprender a crear una aplicación de teléfono de este tipo.
A partir del nivel 21 de la API, también existe una forma de comunicarse con la tarjeta SIM mediante Telephony Manager. Sin embargo, hay un gran obstáculo: su aplicación necesita MODIFY_PHONE_STATE
permiso, que solo se puede otorgar a las aplicaciones del sistema. Una aplicación regular que no sea del sistema no puede usarla.
Miniaplicaciones del kit de herramientas SIM
Una tarjeta SIM es mucho más que una tarjeta inteligente común y escribir un subprograma para una tarjeta SIM puede ser mucho más complicado que para una tarjeta inteligente común si desea utilizar todas las posibilidades que ofrece la tarjeta SIM. Le recomiendo que lea este documento: es la tesis de licenciatura de alguien, pero es la mejor descripción general para un principiante que he encontrado en Internet. También recomiendo este video de la conferencia DefConn.
El papel del applet cargado en la tarjeta SIM es diferente: el applet ya no es una entidad pasiva. El teléfono le pregunta regularmente a su applet: “¿Hay algo nuevo que pueda hacer por usted?” y su applet puede responder: “Sí, envíe este SMS, por favor” o “Dime qué hora es”, etc. Además, su applet puede convertirse en un oyente de algunos eventos: llamada entrante, SMS recibido, intervalo de tiempo transcurrido, etc. Sí , la tarjeta SIM parece ser pasiva desde el punto de vista técnico, pero su papel es de hecho activo: es la tarjeta SIM quien envía comandos al teléfono.
Estos comandos se denominan “comandos proactivos” o comandos del kit de herramientas de la aplicación SIM. La estructura es la misma – CLA INS P1 P2 LC datos LE; el significado es diferente.
Puede enviarlos desde su applet usando clases en un paquete JavaCard especial llamado sim.toolkit
.
(SIM Application Toolkit es un estándar que especifica los comandos proactivos de la misma manera que Global Platform especifica el ciclo de vida del applet).
Ejemplo de subprograma SIM Toolkit:
import sim.toolkit.ToolkitInterface;
import sim.toolkit.ToolkitRegistry;
...
import javacard.framework.ISOException;
public class STKTest extends Applet implements ToolkitInterface
public static void install(byte[] bArray, short bOffset, byte bLength)
// GP-compliant JavaCard applet registration
new STKTest().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
//this method handles standard APDU commands
public void process(APDU apdu)
// Good practice: Return 9000 on SELECT
if (selectingApplet())
return;
apdu.setIncomingAndReceive();
final byte[] buf = apdu.getBuffer();
switch (buf[ISO7816.OFFSET_INS])
case (byte) 0x00:
//do something
break;
//this method handles the SIM Toolkit commands
public void processToolkit(byte event) throws ToolkitException
switch (event)
case ToolkitConstants.EVENT_TIMER_EXPIRATION:
//do something
break;
Sí, debe aprender a usar Android; lo necesitará para usar la biblioteca SEEK. Su pregunta es muy amplia, por favor pregúnteme por cualquier detalle, si lo desea.
A partir del nivel de API 22 (Android 5.1), hay otra opción llamada “Privilegios de operador”. Permite que las aplicaciones que no pertenecen al sistema envíen APDU a la tarjeta SIM usando Android TelephonyManager. Ver: https://developer.android.com/reference/android/telephony/TelephonyManager.html#hasCarrierPrivileges()
Por ejemplo, las aplicaciones de operadores de redes móviles (MNO) que se distribuyen en Google Play pueden usar esto. Pero, de nuevo, no está abierto para todo el mundo. En este caso, la tarjeta SIM debe otorgarle acceso. Las Reglas de Acceso en la SIM son administradas por el MNO que la emitió. Ver también: http://source.android.com/devices/tech/config/uicc.html
Si aceptas, tienes la opción de dejar un artículo acerca de qué le añadirías a esta noticia.