无法使用广播接收器执行操作

ashu

我的应用程序中有一个活动,在收到特定关键字作为消息时,它会发出蜂鸣声,但是我的代码根本不起作用。据Logcat称,它接收到消息。

public class SmsReceiver extends BroadcastReceiver {
    int k = 0;
    public static final String SMS_EXTRA_NAME = "pdus";
    MediaPlayer mPlay = new MediaPlayer();

    public void onReceive(Context context, Intent intent) {
        // Get the SMS map from Intent
        Bundle extras = intent.getExtras();
        String body = "";
        SharedPreferences myPrefs = context.getSharedPreferences("test", Context.MODE_PRIVATE);
        String password = myPrefs.getString("password", "a");
        String find = "find " + password;
        mPlay.create(context, R.raw.music);
        AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        am.setStreamVolume(AudioManager.STREAM_MUSIC, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);
        mPlay.setAudioStreamType(AudioManager.STREAM_MUSIC);

        if (extras != null) {
            // Get received SMS array
            Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME);

            for (int i = 0; i < smsExtra.length; ++i) {
                SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);

                body = sms.getMessageBody().toString();
                if (body.equalsIgnoreCase(find)) {
                    this.abortBroadcast();
                    int dur = mPlay.getDuration();
                    for (int j = 0;; j += dur) {
                        if (k == 1)
                            break;
                        mPlay.start();
                        try {
                            Thread.sleep(dur);
                        } catch (InterruptedException e) {
                        }
                    }
                }

            }
        }
    }

    @Override
    public void onKeyDown() {
        k = 1;
    }

    public void onDestroy() {
        mPlay.stop();
        mPlay.release();
    }
}
罗曼·佩勒林(Romain Pellerin)

你设置好了吗

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

这就是我所做的

public class SmsReceiver extends BroadcastReceiver {

    private Context cont;

    @Override
    public void onReceive(Context context, Intent intent) {
        cont = context;
        Bundle extras = intent.getExtras();

        if (extras != null) {
            Object[] smsExtra = (Object[]) extras.get("pdus");
            SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[0]);
            String phoneNumber = sms.getOriginatingAddress();
            String body = sms.getMessageBody().toString();
            if (body.equalsIgnoreCase("something")) {
                // do your stuff
            }
        }
    }
}

如果这不能回答您的问题,请告诉我们什么不起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

分别注销广播接收器的操作

来自分类Dev

分别注销广播接收器的操作

来自分类Dev

AlarmManager无法从广播接收器工作

来自分类Dev

AlarmManager无法从广播接收器工作

来自分类Dev

广播接收器始终无法充电

来自分类Dev

广播接收器

来自分类Dev

使用清单注册广播接收器

来自分类Dev

使用哪种广播接收器?

来自分类Dev

尝试使用广播接收器注销

来自分类Dev

我应该如何编码此广播接收器以检查Internet并根据其执行操作

来自分类Dev

在android应用中创建文件,该文件由广播接收器检查以执行操作

来自分类Dev

片段中的广播接收器无法从服务接收意图

来自分类Dev

无法通过此代码接收消息(广播接收器)

来自分类Dev

区分具有相同操作的广播接收器

来自分类Dev

区分具有相同操作的广播接收器

来自分类Dev

哪个广播接收器首先执行:动态还是静态?

来自分类Dev

广播接收器vs唤醒广播接收器

来自分类Dev

广播接收器或服务?

来自分类Dev

使用广播接收器更改日期时无法运行服务

来自分类Dev

无法在清单文件上注册广播接收器

来自分类Dev

我的通知无法播放广播接收器

来自分类Dev

广播接收器无法正确获取短信内容

来自分类Dev

无法在清单文件上注册广播接收器

来自分类Dev

OTP广播接收器无法分段工作

来自分类Dev

接收并注册广播接收器

来自分类Dev

如何使用广播接收器检测蓝牙状态变化?

来自分类Dev

如何在服务中使用广播接收器

来自分类Dev

Android:在广播接收器中使用sharedPreferences

来自分类Dev

如何在服务中使用广播接收器