gpt4 book ai didi

android - 广播接收器未在 AndroidManifest.xml 中注册

转载 作者:行者123 更新时间:2023-11-29 16:11:08 25 4
gpt4 key购买 nike

我在注册 BroadcastReceiver 时遇到问题。

当我用 registerReceiver 注册它时它起作用了:

registerReceiver(new NotifReceiver(), new IntentFilter(NotifReceiver.POST_NOTIF));

但不适用于 AndroidManifest.xml :

    <receiver
android:name=".receiver.NotifReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name=".receiver.NotifReceiver.POST_NOTIF" />
</intent-filter>
</receiver>

NotifReceiver.java :

public class NotifReceiver extends BroadcastReceiver {

public static final String POST_NOTIF = "POST_NOTIF";

@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(POST_NOTIF)) {
Log.d("debug", "action received");
}
}

}

最佳答案

根据 Google Guidelines about the action tag .

It's best to use the package name as a prefix to ensure uniqueness.

那么你应该声明你的 Action 为:

public static final String POST_NOTIF = "com.my.package.POST_NOTIF";

并在您的 list 中引用为:

<intent-filter>
<action android:name="com.my.package.POST_NOTIF" />
</intent-filter>

请注意,android:name 只需匹配 POST_NOTIF 静态字符串的值即可。

但为了避免与其他应用程序发生冲突,您应该为您用作操作的字符串设置一个唯一值。这就是为什么 Google 建议在您的包裹前加上前缀。

关于android - 广播接收器未在 AndroidManifest.xml 中注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13139682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com