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
对于String
variables,您不应该与==
符号进行比较,您应该与equals()
方法进行比较
这是错误的
intent.getAction() == SMS_RECEIVED)
这是对的
intent.getAction().equals (SMS_RECEIVED))
由于电话已过时(从1.0我认为),这种方法不再工作。 看看这个教程,如果你需要一个适当的解决scheme: http : //mobiforge.com/developing/story/sms-messaging-android (只是想说明这一点,因为我偶然发现很多教程不工作了)
- 如何在Xamarin.Android中使用SharedPreferences?
- Android Studio:找不到com.android.tools.build:gradle:2.0.0-alpha2
- URLConnection或HTTPClient:提供更好的function和更高的效率?
- android的sqliteencryption
- 什么是Android PendingIntent?
- Android Volley ImageLoader – BitmapLruCache参数?
- ADT 22.2新的应用程序向导:不受支持的模板依赖:升级您的Android Eclipse插件
- 缓存图像并显示
- 如何知道Android中是否存在意图附加组件?