Android短信接收器不工作

我试图编写一个简单的应用程序,试图接收短信和处理它们。 我遵循了几个教程,但是我无处可去,当我发送短信到模拟器时,Intent似乎从未被解雇。

这是我的意图:

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()); } } } } } 

这里是我的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> 

我真的很感激有什么问题的一些指导。 我只是进入Android开发,但我认为我的头(大部分)。 在监视模拟器的logcat时,日志事件永远不会出现,debugging断点也不会被触发,所以我有一种感觉,它在我的意图filter中。

我在Android 2.0.1上运行这个。

除了Samuh的回答 (你需要在动作string上做一个对象比较,或者不做比较),在你的清单文件中你已经拼错了SMS_RECEIVED

我认为你的清单看起来没问题。 问题是与行:

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

我认为它应该是: intent.getAction().equals(ACTION)

希望有帮助..

行动名称在“电话”中似乎需要大写字母“T”。

android.provider.Telephony.SMS_RECEIVED

对于Stringvariables,您不应该与==符号进行比较,您应该与equals()方法进行比较

这是错误的

 intent.getAction() == SMS_RECEIVED) 

这是对的

 intent.getAction().equals (SMS_RECEIVED)) 

由于电话已过时(从1.0我认为),这种方法不再工作。 看看这个教程,如果你需要一个适当的解决scheme: http : //mobiforge.com/developing/story/sms-messaging-android (只是想说明这一点,因为我偶然发现很多教程不工作了)