Pregunta

Actualmente estoy trabajando en una aplicación que utiliza un broadcastreceiver para comprobar los mensajes de texto entrantes, pero de repente parece que han dejado de funcionar, incluso escribí una pequeña aplicación de prueba que, al menos para mí, parece sintácticamente correcta , sino que además no está funcionando.

Este es el código del proyecto de prueba:

El manifiesto:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.AGApplications.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".test"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".MsgMon"> 
            <intent-filter> 
                <action android:name=
                    "android.provider.Telephony.SMS_RECEIVED" /> 
            </intent-filter> 
        </receiver>

    </application>

    <uses-permission android:name="android.permission.RECEIVE_SMS">
    </uses-permission>

    <uses-sdk android:minSdkVersion="8" />
</manifest> 

El BroadcastReceiver:

package com.AGApplications.test;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MsgMon extends BroadcastReceiver{

   @Override
   //Called when new message is received
   public void onReceive(Context context, Intent intent) {
      Log.d("PHONE", "Message Received");
   }
}

Y la actividad principal:

package com.AGApplications.test;

import android.app.Activity;
import android.os.Bundle;

public class test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Por lo que yo puedo decir que no estoy haciendo nada malo, pero obviamente estoy!

¿Fue útil?

Solución

Así descubrí el tema. No se puede utilizar "TELÉFONO" como una etiqueta de depuración. No me pregunte por qué, ya que parece que no puede entenderlo, pero después de usar varias etiquetas diferentes, "teléfono" era el único que no se registraría.

Mi fallo parece estar en otra parte y estoy tras la pista de nuevo! Gracias a todos por su ayuda!

Otros consejos

Todo parece bien para mí que he hecho mismo ejemplo

aquí está mi código:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.infostretch.broadcastex"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">


    <receiver android:name="broadcastex" android:label="@string/app_name"><intent-filter><action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
</application>



<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
</manifest> 


public class broadcastex extends BroadcastReceiver {
    /** Called when the activity is first created. */
    private static final String TAG = "smsfwd";
    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

public void onReceive(Context context, Intent intent) {

    Log.i(TAG, "Intent recieved: " + intent.getAction());

            Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
            if (messages.length > -1) {
                Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());

            }
        }

Este código está trabajando para mí en Android 2.1 tiene una oportunidad, creo que todo es lo mismo que usted

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top