Android启动服务不起作用

时间:2013-03-12 11:58:11

标签: android

我的手机是HTC G18,我正在使用启动接收器。 Android Manifest文件是:

<receiver android:name=".BootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </receiver>

,Java代码是

public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, UpdaterService.class).addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES));
    Log.d("BootReceiver", "onReceived");
    Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
}

当我使用此命令时,启动接收器将在我的手机上工作。

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME 

但是当我尝试重新启动测试时,它将失败。我希望这个启动接收器能够通过手机启动,我该如何处理?

1 个答案:

答案 0 :(得分:1)

确保您拥有清单中的权限

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

您也可以尝试添加完整包而不是简写.BootReceiver。如:

com.yourpackage.receivers.BootReceiver

EDIT 啊,正如评论中所提到的那样。您必须至少启动一次应用程序的主要活动,否则Android将无法调用您的启动接收器。