El receptor de SMS de Android no funciona en ICS incluso después de que se inició la aplicación

Esto puede parecer un problema duplicado al principio, sin embargo, soy consciente de la cambiar en Android 3.1 que requiere que las aplicaciones estén iniciadas para recibir transmisiones y esto relacionado pregunta. Tal vez sea un error de colegial que no veo. Pero esto funciona de maravilla en Android 2.3, y otros receptores están funcionando (es decir, android.net.wifi.SCAN_RESULTS). En Android 4.0.4, Galaxy Nexus.

La funcionalidad que estoy tratando de hacer funcionar en ICS: instalar> iniciar> si no hay detalles del usuario, enviar texto a través de la aplicación sms> SmsReceiver verifica la respuesta entrante y completa los detalles de inicio de sesión (guardando la copia y el pegado del usuario)

¿Qué me estoy perdiendo?

Manifiesto

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:hardwareAccelerated="true"
    >

    <receiver
        android:name="com.myapp.android.receivers.SmsParserReceiver"
        android:enabled="true" android:exported="true"
        >
        <intent-filter android:priority="3000">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

Receptor:

package com.myapp.android.receivers;
public class SmsParserReceiver extends BroadcastReceiver
{

    public SmsParserReceiver()
    {
        QLog.i("SmsParserReceiver created");
    }

    @Override
    public void onReceive(Context context, Intent intent)
    {
        QLog.i("Smsintent recieved: " + intent.getAction());
    }
}

preguntado el 30 de junio de 12 a las 18:06

¿Está seguro de que no hay nada en su dispositivo que tenga una prioridad más alta y consumiría el evento de transmisión de SMS? ¿Has probado esto en el emulador ICS? -

La API de SMS/MMS no ha cambiado en Android 4.0 ICS. @CommonsWare tiene la idea correcta, una aplicación como GO SMS podría tener una mayor prioridad y está llamando a abortBroadcast(). Establezca la prioridad en 214783648 (la más alta posible) y vea si eso ayuda y/o elimine cualquier aplicación que pueda interferir. -

1 Respuestas

Después de probar varios dispositivos y el emulador llegó a la misma conclusión que @commonsware y @Tom, otra aplicación (en el caso de prueba original, GoSMS) está interceptando el boardcast y abortándolo.

Respondido 06 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.