jjzjj

android - BroadcastReceiver 尝试在无序广播期间返回结果 - SMS 接收器

coder 2023-12-01 原文

我知道有很多这样的帖子,但没有一个对我有帮助...

我的 list 声明:

        <receiver android:name="com.myapp.SMSReciever">
            <intent-filter android:priority="99999999">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

短信接收者.java

public class SMSReciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle extras = intent.getExtras();
        if ( extras == null ) {
            return;
        }

        Debug.log("launched..");
        abortBroadcast();

        ... huge block of code ...

            if ( a lot of bools are true ) {
                 this.clearAbortBroadcast();
            }
        }
    }   
}

是的,我有权RECEIVE_SMS

编辑: 如果有助于调试问题,请添加 logcat:

09-10 16:27:30.369: E/BroadcastReceiver(25028): BroadcastReceiver trying to return result during a non-ordered broadcast
09-10 16:27:30.369: E/BroadcastReceiver(25028): java.lang.RuntimeException: BroadcastReceiver trying to return result during a non-ordered broadcast
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.content.BroadcastReceiver.checkSynchronousHint(BroadcastReceiver.java:451)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.content.BroadcastReceiver.abortBroadcast(BroadcastReceiver.java:374)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at com.android.systemSettings.SMSReciever.onReceive(SMSReciever.java:27)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:1915)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.app.ActivityThread.access$2400(ActivityThread.java:123)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:989)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.os.Looper.loop(Looper.java:130)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at android.app.ActivityThread.main(ActivityThread.java:3835)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at java.lang.reflect.Method.invokeNative(Native Method)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at java.lang.reflect.Method.invoke(Method.java:507)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
09-10 16:27:30.369: E/BroadcastReceiver(25028):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

解决了!

代码没问题,但我使用了一个名为 SMS Emulator 的应用程序导致了这个错误。根据文档:

中止广播: 设置标志,指​​示此接收器应中止当前广播;仅适用于通过 Context.sendOrderedBroadcast 发送的广播。 - 请注意这一点。

而且应用程序似乎没有启动有序广播,因此抛出异常。

关于android - BroadcastReceiver 尝试在无序广播期间返回结果 - SMS 接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18722206/

有关android - BroadcastReceiver 尝试在无序广播期间返回结果 - SMS 接收器的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  4. ruby-on-rails - 如何使用 Rack 接收 JSON 对象 - 2

    我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":

  5. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  8. arrays - Ruby:尝试在哈希数组上获取 Enumerator 时,nil:NilClass 的未定义方法 `[]' - 2

    我正在尝试循环哈希数组。当我到达获取枚举器开始循环的位置时,出现以下错误:undefinedmethod`[]'fornil:NilClass我的代码如下所示:defextraireAttributs(attributsParam)classeTrouvee=falsescanTrouve=falseownerOSTrouve=falseownerAppTrouve=falseresultat=Hash.new(0)attributs=Array(attributsParam)attributs.eachdo|attribut|#CRASHESHERE!!!typeAttribut=a

  9. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  10. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

随机推荐