java.lang.Class<...> has no zero argument constructor。registerReceiver(myBroadcastReceiver, filter)。

这篇具有很好参考价值的文章主要介绍了java.lang.Class<...> has no zero argument constructor。registerReceiver(myBroadcastReceiver, filter)。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:确切的说,这是采过的坑,记录的日志。或许,至今还在坑中,而不自知……

出现问题的起因:自定义了一个广播,并发送广播。

然后在另一个Activity中接收广播。

在注册广播时:registerReceiver(myBroadcastReceiver, filter);黄标报错。

就像这样:

is missing receiver_exported or receiver_not_exported flag for unprotected b,java,android studio

提示:

`myBroadcastReceiver` is missing `RECEIVER_EXPORTED` or `RECEIVER_NOT_EXPORTED` flag for unprotected \ broadcasts registered for BROADCAST_ACTION

——必须把这个黄标解决掉!!!=非著名.又菜.又爱玩.业余程序员

我听说这个黄标是因为在manifest中没有注册的原因引起的。

于是跑到里面去注册,一开始,我是写成这样:

is missing receiver_exported or receiver_not_exported flag for unprotected b,java,android studio

很明显,这有错误。我很快意识到,这个必须输入一个完整路径,也许能解决这个问题。

但我点了很久,于是,换了个方式报错:

is missing receiver_exported or receiver_not_exported flag for unprotected b,java,android studio

直到我在Fragment中,将

 private class MyBroadcastReceiver extends BroadcastReceiver {       

        @Override
        public void onReceive(Context context, Intent intent) {
            //My Code
        }
    }

改成:

 public class MyBroadcastReceiver extends BroadcastReceiver {        

        @Override
        public void onReceive(Context context, Intent intent) {
           //My Code
        }
    }

终于可以点出来了:

is missing receiver_exported or receiver_not_exported flag for unprotected b,java,android studio

随后,运行——接着报错:

java.lang.Class<...> has no zero argument constructor

于是,我又添加了零参构造函数:

 public class MyBroadcastReceiver extends BroadcastReceiver {
        private MyBroadcastReceiver() {
        }

        @Override
        public void onReceive(Context context, Intent intent) {
            //My Code
        }
    }

这里写成public和private我没有明显的感觉到有啥区别。因为我有多个Activity需要接收这个广播(在同一个地方发送,在n个地方接收),所以我选择了private。

随后,运行——接着报错、闪退:

java.lang.Class<...> has no zero argument constructor

一次偶然的机会,我在申明处和接收处写了不同的action,发现不报错了。于是,我写成了这样(至于为什么,还没有搞清,只是可以运行了):

is missing receiver_exported or receiver_not_exported flag for unprotected b,java,android studio

但是在发送、接收处的action都写成

BROADCAST_ACTION

也就是,少了一部少(或者说不一样,一样就会报错)。

最后,解决黄标报错,是在new IntentFilter时,改为全局变量。(至于为什么,我也没有搞清。而且前面不能写private,写完又黄标报错……)

is missing receiver_exported or receiver_not_exported flag for unprotected b,java,android studio

注意,这个action,与前面申明的名字不一样!

这样,就可以运行了……

——然而,这个时候并没有完。签名打包时,会报错。提示在build.gradle里添加文章来源地址https://www.toymoban.com/news/detail-832429.html

android {
    lint {
        baseline = file("lint-baseline.xml")
    }
}

到了这里,关于java.lang.Class<...> has no zero argument constructor。registerReceiver(myBroadcastReceiver, filter)。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包