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 秒或更长时间才能启动!
我有一个 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 秒或更长时间才能启动!