靜態(tài)注冊(cè)BroadcastReceiver時(shí)出現(xiàn)
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
因?yàn)槲业腞eceiver是內(nèi)部類,所以注冊(cè)格式為
<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,如果是靜態(tài)廣播注冊(cè)方式、廣播作為內(nèi)部類來使用:廣播內(nèi)部類聲明為static類型。
2,如果是非靜態(tài)廣播注冊(cè)方式:廣播必須在類中注冊(cè)(調(diào)用registerReceiver()方法)、注銷(調(diào)用unregisterReceiver()方法)。