Pergunta

Eu estou tentando escrever um aplicativo simples que tenta receber mensagens SMS e lidar com eles.Eu segui vários tutoriais, mas estou chegando a lugar nenhum, quando eu enviar um SMS para o emulador, a Intenção parece nunca ser demitido.

Aqui é a minha intenção:

package com.neocodenetworks.smsfwd;

import android.content.*;
import android.os.Bundle;
import android.telephony.*;
import android.util.Log;

public class SmsReciever extends BroadcastReceiver {
    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
    private static final String TAG = "smsfwd";

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

        if (intent.getAction() == SMS_RECEIVED) {
            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                Object[] pdus = (Object[])bundle.get("pdus");
                final SmsMessage[] messages = new SmsMessage[pdus.length];
                for (int i = 0; i < pdus.length; i++) {
                    messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                }
                if (messages.length > -1) {
                    Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
                    NetComm.SendMessage("me", messages[0].getOriginatingAddress(), messages[0].getMessageBody());
                }
            }
        }
    }
}

e aqui é o meu AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.neocodenetworks.smsfwd"
        android:versionCode="1"
        android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
        <receiver android:name=".SmsReciever">
            <intent-filter>
                <action android:name="android.provider.telephony.SMS_RECIEVED"></action>
            </intent-filter>
        </receiver>
    </application>
    <uses-sdk android:minSdkVersion="6" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>

Eu realmente aprecio alguns orientação com o que está acontecendo de errado.Eu estou apenas começando em desenvolvimento Android, mas eu acho que eu tenho minha cabeça enrolado (a maioria) ele.Enquanto o monitoramento do emulador logcat, o log de eventos de nunca chegar, e pontos de interrupção de depuração são nunca bateu, então eu tenho a sensação de que em algum lugar na minha intenção de filtro.

Estou executando esta no Android 2.0.1.

Foi útil?

Solução

Além de Resposta de Samuh (Você precisa fazer uma comparação de objetos na string de ação ou simplesmente não fazer comparação), em seu arquivo de manifesto que você escreveu com erros ortográficos SMS_RECEIVED.

Outras dicas

Eu acho que seu manifesto parece bem; O problema é com a linha:

if (intent.getAction() == SMS_RECEIVED) {

Eu acho que deveria ser: intent.getAction().equals(ACTION)

Espero que ajude..

O nome da ação parece exigir um capital "T" na telefonia.

android.provider.Telephony.SMS_RECEIVED

Para String variáveis que você não deve comparar com == o símbolo, você deve comparar com equals() método

isso é errado

intent.getAction() == SMS_RECEIVED) 

isso é direito

intent.getAction().equals (SMS_RECEIVED)) 

Como a telefonia é descontinuada (desde 1,0 eu acho), esse método não funciona mais. Confira este tutorial se precisar de uma solução adequada:http://mobiforge.com/devell/story/sms-messaging-android(Só queria notar isso, já que tropecei em muitos tutoriais que não funcionam mais)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top