1

我只想问是否有人知道或有一个适用于 android 的 SMS 接收器/处理程序代码。因为我已经在网上搜索了好几天,但我仍然没有看到更新的代码,大多数似乎已经弃用了他们的代码,就像这里的http://mobiforge.com/developing/story/sms-messaging-如果有人能教我在应用程序中接收短信的新代码,我将不胜感激谢谢!

4

3 回答 3

4

我最近刚刚实现了一个有效的 BroadcastReceiver 来处理 SMS 消息。关键部分是清单和广播接收器。

在清单中,您需要 RECEIVE_SMS 权限:

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

您不需要 READ_SMS。您的接收者条目应如下所示:

<receiver
    android:name=".IncomingSmsBroadcastReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

大多数人似乎忘记了android:exported="true"这是必需的,因为广播来自您的应用程序外部。一些帖子建议您需要android:permission="android.permission.RECEIVE_SMS"android:permission="android.permission.BROADCAST_SMS"但事实并非如此。

我的 BroadcastReceiver 实现如下所示:

package smsmanager;

import java.util.List;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class IncomingSmsBroadcastReceiver extends BroadcastReceiver {

    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(final Context context, final Intent intent) {

        if (intent != null && SMS_RECEIVED.equals(intent.getAction())) {
            final SmsMessage smsMessage = extractSmsMessage(intent);
            processMessage(context, smsMessage);
        }

    }

    private SmsMessage extractSmsMessage(final Intent intent) {

        final Bundle pudsBundle = intent.getExtras();
        final Object[] pdus = (Object[]) pudsBundle.get("pdus");
        final SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdus[0]);

        return smsMessage;

    }

    private void processMessage(final Context context, final SmsMessage smsMessage) {
        // Do something interesting here
    }

}

一切都如我所愿,我可以停止烧毁我的短信津贴测试

于 2012-03-27T23:09:09.797 回答
0

如果android.telephony.gsm.SmsMessageandroid.telephony.SmsMessage. 这只是关于倾听android.provider.Telephony.SMS_RECEIVE

于 2012-01-30T16:12:44.037 回答
0

这里有一个线程,其中包含执行您要求的代码。请注意,那里的答案有一些更正。

于 2012-01-30T16:17:21.983 回答