我如何在android中接收短信?
我是android新手,我正在使用android 2.1进行一些短信接收:当收到短信时,它将无法工作。。。我有力量接近,救命我如何在android中接收短信?,android,Android,我是android新手,我正在使用android 2.1进行一些短信接收:当收到短信时,它将无法工作。。。我有力量接近,救命 public class SmsReceiverActivity extends Activity { private static final String SHORTCODE = "55443"; public void onReceive(Context context, Intent intent) { Bundle bundle
public class SmsReceiverActivity extends Activity {
private static final String SHORTCODE = "55443";
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] messages = (Object[]) bundle.get("pdus");
SmsMessage[] sms = new SmsMessage[messages.length];
//Create messages for each incoming PDU
for (int n = 0; n < messages.length; n++) {
sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
for (SmsMessage msg: sms) {
//Verify if the message came from our known sender
if (TextUtils.equals(msg.getOriginatingAddress(), "SHORTCODE")) {
Toast.makeText(context, "Received message from the mothership: " + msg.getMessageBody(),Toast.LENGTH_SHORT).show();
}
}
}
我认为您需要在Manifest.xml中做一些更改,例如:
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="100">
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="PACKAGE_NAME.android.action.broadcast"/>
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
您需要一个广播接收器
来读取应用程序中的短信。您可以使用以下命令
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
SmsMessage shortMessage = SmsMessage.createFromPdu((byte[]) pdus[0]);
Log.i("sms received", "sms received");
Log.i("SMS: ", shortMessage.getDisplayMessageBody());
}
}
此外,您还需要通过以下方式将其声明到应用程序中
<receiver android:name="YOUR_PACKAGE_NAME.SmsReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
不要忘记添加与SMS相关的权限,如以下内容
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
请发布您的logcat错误。什么不起作用?你有错误吗?您没有收到任何短信?您必须先阅读有关广播接收器的信息。你需要关心这个异常:java.lang.ClassNotFoundExceptionSorry Moaaviah先生我在你的代码中的“Contact”和“UserPreferences”有错误,“Contact”和“UserPreferences”是什么?感谢alot@maryam_mo请现在检查一下。有一些额外的东西我已经移走了。请用您各自的包裹更改您的包裹名称。
<receiver android:name="YOUR_PACKAGE_NAME.SmsReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>