Estoy tratando de crear una aplicación para monitorear los mensajes SMS entrantes, y ejecutar un programa a través de SMS entrantes, también debería leer el contenido del SMS.
Flujo de trabajo:
- SMS enviado al dispositivo Android
- Aplicación auto ejecutable
- Lee la información de SMS
android
sms
android-service
iShader
fuente
fuente
Respuestas:
Nota: en su archivo de manifiesto, agregue BroadcastReceiver-
Agregue este permiso:
fuente
SMS_RECEIVED
transmisión en 4.4+, y, ahora que esa transmisión no puede ser cancelada, es más segura que en versiones anteriores.Tenga en cuenta que en algunos dispositivos su código no funcionará sin Android: priority = "1000" en el filtro de intención:
Y aquí hay algunas optimizaciones:
Nota :
El valor debe ser un número entero, como "100". Los números más altos tienen una prioridad más alta. El valor predeterminado es 0. El valor debe ser mayor que -1000 y menor que 1000.
Aquí hay un enlace.
fuente
android:priority
no puede ser mayor que1000
(o menor que-1000
).@Mike M. y yo encontramos un problema con la respuesta aceptada (vea nuestros comentarios):
Básicamente, no tiene sentido pasar por el ciclo for si no estamos concatenando el mensaje multiparte cada vez:
Tenga en cuenta que solo establecemos
msgBody
el valor de cadena de la parte respectiva del mensaje sin importar el índice en el que estemos, lo que hace que todo el punto de recorrer las diferentes partes del mensaje SMS sea inútil, ya que solo se establecerá en el mismo último valor del índice. En su lugar debemos utilizar+=
, o como señaló Mike,StringBuilder
:En general, así es como se ve mi código de recepción de SMS:
Simplemente exponiendo esta respuesta en caso de que alguien más tenga la misma confusión.
fuente
¡Esto es lo que usé!
fuente
En caso de que desee manejar la intención de una actividad abierta, puede usar PendintIntent (complete los pasos a continuación):
manifiesto:
onNewIntent:
permisos:
fuente
Si alguien se refiere a cómo hacer la misma función (leer OTP usando los SMS recibidos) en Xamarin Android como yo:
Agregue este código a su archivo AndroidManifest.xml:
Luego cree su clase BroadcastReveiver en su Proyecto Android.
Registre esta clase BroadcastReceiver en su clase MainActivity en Android Project:
fuente
Gracias a @Vineet Shukla (la respuesta aceptada) y @Ruchir Baronia (encontró el problema en la respuesta aceptada), a continuación se muestra la
Kotlin
versión:Agregar permiso:
Registre BroadcastReceiver en AndroidManifest:
Agregar implementación para BroadcastReceiver:
En algún momento, el evento se dispara dos veces, así que agrego
mLastTimeReceived = System.currentTimeMillis()
fuente
implementación de difusión en Kotlin:
Nota: en su archivo de manifiesto, agregue BroadcastReceiver-
Agregue este permiso:
fuente
La respuesta aceptada es correcta y funciona en versiones anteriores de Android donde el sistema operativo Android solicita permisos en la instalación de la aplicación, sin embargo, en las versiones más recientes de Android no funciona de inmediato porque el sistema operativo Android más nuevo solicita permisos durante el tiempo de ejecución cuando la aplicación requiere esa función . Por lo tanto, para recibir SMS en las versiones más recientes de Android utilizando la técnica mencionada en el programador de respuestas aceptado, también debe implementar un código que verifique y solicite permisos del usuario durante el tiempo de ejecución. En este caso, la funcionalidad / código de comprobación de permisos se puede implementar en onCreate () de la primera actividad de la aplicación. Simplemente copie y pegue los dos métodos siguientes en su primera actividad y llame al método checkForSmsReceivePermissions () al final de onCreate ().
fuente