¿Por qué java sería incorrecto si no lo programa en java en Android?
jitter
3
Esto apesta a maldad. No deberías estar haciendo esto.
MattC
43
¡Hay usos legítimos! Por ejemplo, si desea hacer algo (enviar ubicación GPS, borrar o algo) en su teléfono a través de SMS en caso de que sea robado; no quieres que quien robó el teléfono vea ese mensaje SMS.
políglota
21
¡Vamos gente! Esto definitivamente NO es "malvado" en absoluto. ¡@polyglot tiene razón! Estoy haciendo una aplicación para confirmar el número de usuario (como lo hace Viber) y lo necesito. Todo se puede usar como "malvado". No instale aplicaciones malvadas, solo eso.
Felipe
Respuestas:
187
Si.
A pesar de algunas reacciones negativas a esta pregunta, existen usos legítimos para la interceptación de SMS. Por ejemplo: automatización de la verificación del número de teléfono, servicios que se brindan a través de SMS (aunque generalmente esto debe hacerse con SMS de datos) o para aplicaciones que mejoran la experiencia del usuario procesando mensajes con formato especial para mostrarlos en un buen Android. -IU específica.
A partir de Android 1.6, las transmisiones de mensajes SMS entrantes ( android.provider.Telephony.SMS_RECEIVED) se entregan como una " transmisión ordenada ", lo que significa que puede decirle al sistema qué componentes deben recibir la transmisión primero.
Si define un android:priorityatributo en su escucha de SMS <intent-filter>, recibirá la notificación antes de la aplicación de SMS nativa.
En este punto, puede cancelar la transmisión, evitando que se propague a otras aplicaciones.
Actualización (octubre de 2013): cuando llegue Android 4.4, se realizarán cambios en las API de SMS que pueden afectar la capacidad de una aplicación para influir en la entrega de SMS.
Consulte esta publicación del blog de desarrolladores de Android para obtener más información: http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html
Santo Dios. ¡Esto es verdad! ¡Siempre he asumido que sería al revés! Para pruebas, mire aquí . Guau. Ojalá pudiera darte más de un voto a favor;)
Hamy
1
@kakopappa: Sí, como se menciona en la respuesta, funciona desde Android 1.6+.
Christopher Orr
1
@herom Tengo aplicaciones que usan prioridad 1000, por lo que es posible. De hecho, Handcent está usando prioridad 2147483647.
Christopher Orr
2
Esto funcionó para mí para :) Mi aplicación captura el mensaje primero y no hay notificación, pero luego sms no llega a la bandeja de entrada de Mensajes. Como si nunca hubiera sido recibido, solo en mi aplicación. ¿Hay alguna forma de utilizar la transmisión de cancelación pero para recibir mensajes en la bandeja de entrada?
pandabear
7
Es importante tener en cuenta el nuevo nivel de API 19 como dice @ChristopherOrr en su actualización. Ahí dice "Beginning with Android 4.4—any attempt by your app to abort the SMS_RECEIVED_ACTION broadcast will be ignored so all apps interested have the chance to receive it.".
GoRoS
11
Paso 1: Cree su receptor de transmisión personalizado para recibir sms. escriba la lógica para abortar el más amplio para que el mensaje no esté disponible en su bandeja de entrada
Como la recepción de SMS es una transmisión ordenada, el receptor con alta prioridad recibirá primero, por lo que su aplicación recibirá primero y, después de recibir, está cancelando la transmisión. Por lo que ninguna otra aplicación puede recibirlo. Por lo tanto, los sms no existirán en la bandeja de entrada.
¿Podemos tener un receptor de transmisión, cuando el usuario presiona la bandeja de entrada del mensaje, para que pueda desarrollar una pantalla de bloqueo?
Vamsi Pavan Mahesh
9
La siguiente solución ("android: priority" y abortBroadcast ()) funciona siempre que la aplicación de mensajería de Android esté predeterminada (me refiero a la aplicación de mensajería de Android estándar). Si el usuario instala "GoSMSPro" o "HandcentSMS", estas aplicaciones aún muestran mensajes en la bandeja de entrada, creo que esto se debe a "android: priority". No veo ninguna mejor manera de solucionar el problema anterior, si hay aplicaciones de mensajería de terceros instaladas en el teléfono.
Buen punto. Pero esto debería ser un comentario, no una respuesta. ¿Es posible moverlo? --- ¿y si le pones un valor muy alto? Como android: priority = "9999"? ¿por ejemplo? ¿Has probado eso?
Felipe
4
@FelipeMicaroniLalli en realidad GO SMS PRO, etc ... use 2147483647 para su prioridad
@NomanHamid Eso es correcto. 999 es la prioridad máxima. Puede usar el número que elija, aunque Android solo garantizará hasta 999. Cualquier cosa más grande que eso y puede o no ser inestable y tener consecuencias no deseadas. Personalmente, tuve que usar 2147483647 para intentar revisar aplicaciones como GO SMS PRO. A veces funcionó para los usuarios y otras no.
Si tiene un escenario como este y desea eliminar o ignorar el mensaje relacionado con este número de contacto "+ 44xxxxx", etc., utilice este código en el receptor de transmisión de SMS
Respuestas:
Si.
A pesar de algunas reacciones negativas a esta pregunta, existen usos legítimos para la interceptación de SMS. Por ejemplo: automatización de la verificación del número de teléfono, servicios que se brindan a través de SMS (aunque generalmente esto debe hacerse con SMS de datos) o para aplicaciones que mejoran la experiencia del usuario procesando mensajes con formato especial para mostrarlos en un buen Android. -IU específica.
A partir de Android 1.6, las transmisiones de mensajes SMS entrantes (
android.provider.Telephony.SMS_RECEIVED
) se entregan como una " transmisión ordenada ", lo que significa que puede decirle al sistema qué componentes deben recibir la transmisión primero.Si define un
android:priority
atributo en su escucha de SMS<intent-filter>
, recibirá la notificación antes de la aplicación de SMS nativa.En este punto, puede cancelar la transmisión, evitando que se propague a otras aplicaciones.
Actualización (octubre de 2013): cuando llegue Android 4.4, se realizarán cambios en las API de SMS que pueden afectar la capacidad de una aplicación para influir en la entrega de SMS.
Consulte esta publicación del blog de desarrolladores de Android para obtener más información:
http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html
fuente
1000
, por lo que es posible. De hecho, Handcent está usando prioridad2147483647
."Beginning with Android 4.4—any attempt by your app to abort the SMS_RECEIVED_ACTION broadcast will be ignored so all apps interested have the chance to receive it."
.Paso 1: Cree su receptor de transmisión personalizado para recibir sms. escriba la lógica para abortar el más amplio para que el mensaje no esté disponible en su bandeja de entrada
Paso 2 Registre el receptor de transmisión en AndoridManifest y coloque android: valor de prioridad en un número grande
Eso es
¿Cómo funciona el código anterior?
Como la recepción de SMS es una transmisión ordenada, el receptor con alta prioridad recibirá primero, por lo que su aplicación recibirá primero y, después de recibir, está cancelando la transmisión. Por lo que ninguna otra aplicación puede recibirlo. Por lo tanto, los sms no existirán en la bandeja de entrada.
fuente
La siguiente solución ("android: priority" y abortBroadcast ()) funciona siempre que la aplicación de mensajería de Android esté predeterminada (me refiero a la aplicación de mensajería de Android estándar). Si el usuario instala "GoSMSPro" o "HandcentSMS", estas aplicaciones aún muestran mensajes en la bandeja de entrada, creo que esto se debe a "android: priority". No veo ninguna mejor manera de solucionar el problema anterior, si hay aplicaciones de mensajería de terceros instaladas en el teléfono.
fuente
Compruebe la prioridad y establezca una prioridad más alta (en su manifiesto) que otros receptores.
fuente
Si tiene un escenario como este y desea eliminar o ignorar el mensaje relacionado con este número de contacto "+ 44xxxxx", etc., utilice este código en el receptor de transmisión de SMS
También debe configurarlo como alta prioridad.
fuente