Qt android 无法收听 os 意图 ex.RECEIVE_BOOT_COMPLETED

Qt android Can't listen to os intents ex.RECEIVE_BOOT_COMPLETED

我有一个 android 服务,当我打开我的应用程序时 运行,现在我希望我的 android 服务在启动时 运行。我试过下面的代码,但当我重新启动我的设备时,服务不会自动 运行ning。我无法在我的 phone 上看到它 运行ning 作为一项服务!我的代码有问题吗?

我将这些权限添加到清单中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_HEADSET_PLUG"/>

清单中是我的接收器:

<receiver android:name="org.qtproject.example.MyBroadcastReceiver">
  <intent-filter>
  <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/>
  <action android:name="android.intent.action.RECEIVE_HEADSET_PLUG"/>
  </intent-filter>
 </receiver>

这里是 MyBroadcastReceiver.java:

import android.os.Bundle;
import org.qtproject.qt5.android.bindings.QtActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, org.qtproject.example.MyCustomAppService.class);
        context.startService(startServiceIntent);

    }
}

替换 <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/><action android:name="android.intent.action.BOOT_COMPLETED"/> 在清单中

好的,所以我的代码中有 2 个问题:

1)感谢@kajay,我不得不按照他的描述改变我的行动路线, 成为: <action android:name="android.intent.action.BOOT_COMPLETED"/> 在清单中。

2) 我没有在 MyBroadcastReceiver.java 中定义包。因此,class 无法找到 startServiceIntent。当然 qt 不会对许多 java 问题给出任何错误或警告。 所以,在我的例子中,我不得不将它添加到 MyBroadcastReceiver.java :

package org.qtproject.example;

我必须执行上述两个步骤才能解决我的问题! P.S 有时服务在启动后需要大约 45 秒或更长时间才能启动!