0

我有一个在我打开我的应用程序时运行的 android 服务,现在我希望我的 android 服务在启动时运行。我尝试了下面的代码,但是当我重新启动设备时,该服务没有自动运行。我看不到它在我的手机上作为服务运行!我的代码有问题吗?

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

<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);

    }
}
4

2 回答 2

1

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

于 2017-06-01T08:48:55.053 回答
0

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

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

2) 我错过了在 MyBroadcastReceiver.java 中定义包。因此,该类找不到 startServiceIntent。当然 qt 不会给出任何带有许多 java 问题的错误或警告。因此,就我而言,我必须将其添加到 MyBroadcastReceiver.java :

package org.qtproject.example;

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

于 2017-06-04T11:20:51.627 回答