gpt4 book ai didi

android - 为另一个应用程序调用自定义广播接收器

转载 作者:行者123 更新时间:2023-11-29 21:53:34 32 4
gpt4 key购买 nike

我有 2 个应用,App1 和 App2

在 App1 中, list 文件具有如下定义的 BroadcastReceiverIncoming。

<receiver android:name="packagename.BroadcastReceiverIncoming"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="packagename.BroadcastReceiverIncoming" />
</intent-filter>
</receiver>

BroadcastReceiverIncoming 在 App1 中定义。

现在在 App2 中,我调用它来调用广播接收器,但它现在可以正常工作了吗?

Intent intent = new Intent();
intent.setClassName("packageName", "packagename.BroadcastReceiverIncoming");
intent.setAction("packagename.BroadcastReceiverIncoming");
appContext.sendBroadcast(intent);

即使第 2 行注释/取消注释,它也不会调用 BroadcastReceiverIncoming。

通过 adb 如果我调用 adb shell am broadcast -n packageName/packagename.BroadcastReceiverIncoming在 App1 中正确调用 BroadcastReceiverIncoming。

最佳答案

我的工作如下:

    myServiceReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent data) {
if (data.getAction().equals(POLayer.SVC_INTENT)) {
final String alias = data.getStringExtra("alias");
final String command = data.getStringExtra("action");
if (command.equals("dosomething")) {
new DoSomethingTask().execute( alias );
}
}
}
};

....

onCreate:
final IntentFilter filter = new IntentFilter(POLayer.SVC_INTENT);
filter.addAction(POLayer.ANOTHER_INTENT);
this.registerReceiver(this.myServiceReceiver, filter);

在发件人中:

                Intent i = new Intent();
i.setAction( SVC_INTENT );
i.putExtra( "alias", theAlias );
i.putExtra( "action", "dosomething" );
this.sendBroadcast( i );

我看到的唯一区别是我不依赖包/组件名称,而是定义我自己的 ACTION。此外,所有名称都区分大小写,因此您可能需要检查 packageName 与 packagename。

关于android - 为另一个应用程序调用自定义广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803082/

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