微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 不允许IntentReceiver组件绑定到服务

这是我的代码

import android.content.broadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.speech.tts.TextToSpeech;
import android.telephony.SmsMessage;
import android.util.Log;

public class SmsbroadcastReceiver extends broadcastReceiver {

    @Override
    public void onReceive(Context context,Intent intent) {
        Object[] rawMsgs = (Object[])intent.getExtras().get("pdus");

        for (Object raw : rawMsgs) {
            SmsMessage message  = SmsMessage.createFromPdu((byte[])raw);

            Log.v("[SMS]:",message.getMessageBody());

            TextToSpeech tts = new TextToSpeech(context,null);

        }
    }
}

我尝试初始化TextToSpeech时出错.显然,我在broadcastReceiver中无法绑定到服务.这有什么解决方法吗?

解决方法

Is there any workaround for this?

你有比这更大的问题.

首先,在主应用程序线程上以前台优先级调用onReceive().您不能在那里花费超过几毫秒而不会导致前台应用程序出现问题,例如在游戏中造成口吃.

其次,当SMS消息进入时,您不知道用户正在做什么.他们可能正在玩游戏.他们可能正在拨打电话的电话中间.您不能,也不能,不能单方面决定您将通过文本转语音播放一个人的短信.你很容易被起诉,也许更糟.

我敦促你现在停止编码,并坐下来思考 – 真的想 – 你正在尝试做什么,以及你的方法的后果.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐