且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android的广播接收器错误:找不到类异常

更新时间:2022-06-15 19:40:32

从Android文档中的机器人:出口属性接收器:

from the android documentation on "android:exported" attribute for a receiver:

不管是不是广播接收器可以在其应用程序的外部来源收到的消息 - 真如果可以,和假,如果没有。如果假,广播接收机可接收的唯一消息是那些由具有相同的用户ID相同的应用程序或应用程序的组成部分发送。 默认值取决于广播接收器是否包含意图过滤器。不存在任何过滤器意味着它只能由指定其确切类名意图对象上调用。这意味着,接收器仅用于应用内部使用(因为更为通常不会知道类名称)。因此,在这种情况下,默认值是假。另一方面,至少一个过滤器的presence意味着广播接收机旨在接收意图由系统或其它应用程序播放,那么该默认值是真

Whether or not the broadcast receiver can receive messages from sources outside its application — "true" if it can, and "false" if not. If "false", the only messages the broadcast receiver can receive are those sent by components of the same application or applications with the same user ID. The default value depends on whether the broadcast receiver contains intent filters. The absence of any filters means that it can be invoked only by Intent objects that specify its exact class name. This implies that the receiver is intended only for application-internal use (since others would not normally know the class name). So in this case, the default value is "false". On the other hand, the presence of at least one filter implies that the broadcast receiver is intended to receive intents broadcast by the system or other applications, so the default value is "true"

由于您的接收器有孩子的Intent为默认值的android:出口是真实的。只是说明这一明确的,它应该发挥的罚款。

Since your receiver has child intents the default value for android:exported is true. Just state this explicitly and it should function fine.

<receiver android:name=".FirstRunBroadcastReceiver" android:exported="true">
<intent-filter>
    <action android:name="android.intent.action.PACKAGE_REPLACE"/>
    <data android:scheme="package" android:path="com.name.pkg.app_name">
</intent-filter>