gpt4 book ai didi

android - 如何在 Android 9 上声明显式接收器

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

我在 list 中声明接收器并让它工作时遇到了一些麻烦。

我知道自 android 8.0 以来, list 中不能声明任何隐式广播接收器,但它可以是显式声明的接收器。

所以我在 list 中这样声明我的:

<receiver android:name=".util.AppReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="com.ibermatica.mime.starttracking" />
</intent-filter>
</receiver>

之后,我在手机中以 Debug模式安装应用程序,并在 onReceive 方法中放置一个断点,其中包含以下代码:

if(intent.getAction() != null){
switch (intent.getAction()){
case Util.START_TRACKING:
Intent i;
i = new Intent(context, LocationUpdatesService.class);
context.startService(i);
break;
default:
}
}

所以我使用以下命令从命令行发送广播消息,让应用程序在后台运行:

adb shell am broadcast -a com.ibermatica.mime.starttracking

但是没有任何反应,接收者也没有被调用。有什么问题或我必须做些什么来解决这个问题?

提前致谢!

最佳答案

I know since android 8.0 there can't be any implicit broadcast receivers declared in manifest, but it can be explicit receivers declared.

“显式”和“隐式”是用来指代 Intent 对象类型的术语,而不是 list 条目。

But nothing happens, nor the receiver gets called.

正确。您正在命令行上创建隐式 Intent,并且隐式 Intent 广播通常在 Android 8.0+ 上不起作用。

尝试:

adb shell am broadcast -n com.whatever/.util.AppReceiver -a com.ibermatica.mime.starttracking

com.whatever 替换为您的应用程序 ID。

关于android - 如何在 Android 9 上声明显式接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55689752/

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