静态注册BroadcastReceiver时出现
java.lang.RuntimeException: Unable to instantiate receiver com.csair.oatree.broadcast.OaTreeBRHelper$OaTreeReceiver: java.lang.InstantiationException: java.lang.Class<com.csair.oatree.broadcast.OaTreeBRHelper$OaTreeReceiver> has no zero argument constructor
因为我的Receiver是内部类,所以注册格式为
<receiver
android:name="com.csair.oatree.broadcast.OaTreeBRHelper$OaTreeReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.csair.oatree.broadcast_OaTreeAuth" />
</intent-filter>
</receiver>
解决方案:
1,如果是静态广播注册方式、广播作为内部类来使用:广播内部类声明为static类型。
2,如果是非静态广播注册方式:广播必须在类中注册(调用registerReceiver()方法)、注销(调用unregisterReceiver()方法)。