应用关闭时 BroadcastReceiver 收不到

BroadcastReceiver doesnt receive when app is closed

我知道这个问题类似于 BroadcastReceiver 的许多问题,但正如我所读,没有一个有解决方案。 BroadcastReceiver 的教程告诉它即使应用程序不是 运行 在后台也可以工作,我的问题是为什么当应用程序不是 运行 时我不能使用它 我试图从主 activity 调用广播,使用服务和 .... 但他们都没有解决我的问题。

这是我的代码:

MyReceiver java Class:

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"BroadCast Trigger",Toast.LENGTH_SHORT).show();
    }
 }

还有我的清单代码:

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.media.VOLUME_CHANGED_ACTION" />
    </intent-filter>
</receiver>

我发现无法以编程方式在华为设备中激活 BroadcastReceiver,但这里有一个解决方案可以查找设备类型并在这方面执行所需的操作,例如向用户显示手动激活它的警报。

        if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
        // Do Needed Action
    }

我在 Huawey Honor 上遇到了同样的问题 Android 7. 在 Sony 和 ZTE 设备上,BroadcastReceiver 按预期工作。但是在荣誉上它工作了一段时间然后突然停止了。 我发现,这个问题与重新启动无关。我重新启动设备,然后广播接收器工作。但有时,它不重启就停止了。

首先我根据这个解决方案将我的应用程序添加到受保护列表:

但这并没有帮助:(

然后,根据此建议,我向我的应用程序添加了一个伪造的辅助功能服务:

问题解决了!