【问题标题】:Error in receiving SMS using Broadcast receiver使用广播接收器接收短信时出错
【发布时间】:2014-04-22 02:42:47
【问题描述】:

我正在尝试使用广播接收器接收短信。我的短信接收器:

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

public class MySmsReceiver extends BroadcastReceiver {
    /** Tag string for our debug logs */
    private static final String TAG = "MySmsReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "Recieved a message");
        Bundle extras = intent.getExtras();
        if (extras == null)
            return;

        Object[] pdus = (Object[]) extras.get("pdus");

        for (int i = 0; i < pdus.length; i++) {
            SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
            String fromAddress = message.getOriginatingAddress();
            String fromDisplayName = fromAddress;

            Log.i(TAG, fromAddress);
            Log.i(TAG, fromDisplayName);
            Log.i(TAG, message.getMessageBody().toString());

            break;          
        }
    }
}

并添加到 Mainfest 文件中

<receiver android:name=".MySmsReceiver" android:enabled="false">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
    <uses-permission android:name="android.permission.RECEIVE_SMS" />

但是当我运行这个应用程序并使用模拟器发送短信时,它会在 logcat 中显示以下日志

10-12 00:14:53.082: 详细/电话 (1032): getOrCreateThreadId uri: content://mms-sms/threadID?recipient=9898989898 10-12 00:14:53.203:详细/电话(1032):getOrCreateThreadId 光标 cnt:1 10-12 00:14:53.432: DEBUG/Mms:app(1032): getSmsNewMessageNotificationInfo: count=4, first addr=9898989898, thread_id=3 10-12 00:14:53.482: WARN/NotificationService(62): 没有玩家的停止命令 10-12 00:14:53.562: DEBUG/MediaPlayer(62): 无法在客户端打开文件,正在尝试服务器端 10-12 00:14:53.582: 错误/MediaPlayerService(34): 无法为 content://settings/system/notification_sound 打开 fd 10-12 00:14:53.592: 错误/MediaPlayer(62): 无法创建媒体播放器 10-12 00:14:53.643: WARN/NotificationService(62): content://settings/system/notification_sound 的错误加载声音 10-12 00:14:53.643: WARN/NotificationService(62): java.io.IOException: setDataSource failed.: status=0x80000000 10-12 00:14:53.643: WARN/NotificationService(62): at android.media.MediaPlayer.setDataSource(Native Method) 10-12 00:14:53.643: WARN/NotificationService(62): 在 android.media.MediaPlayer.setDataSource(MediaPlayer.java:716) 10-12 00:14:53.643: WARN/NotificationService(62): 在 android.media.MediaPlayer.setDataSource(MediaPlayer.java:671) 10-12 00:14:53.643: WARN/NotificationService(62): at com.android.server.NotificationPlayer$CreationAndCompletionThread.run(NotificationPlayer.java:88)

建议我可能是什么原因。

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

    我解决了这个问题。我在一个 AVD 中运行,它被创建为 Google API 作为运行时,并且可能某些类在该 API 中不可用,因此将 AVD 运行时更改为 Android 2.2 它可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      相关资源
      最近更新 更多