当一个device在android启动的时候我想要启动一个服务,但是我发现我实现不了
我已经在网上找了很久了,但是没有代码是可以用的。是我忘了什么么?这是我的代码。
Manifest
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".StartServiceAtBootReceiver"
android:enabled="true"
android:exported="false"
android:label="StartServiceAtBootReceiver">
<intent-filter>
<action android:name="android.intent.action._BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<service android:enabled="true" android:name="com.test.RunService"/>
Receiver OnReceive
public void onReceive(Context context, Intent intent)
{
if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()))
{
Intent serviceLauncher = new Intent(context, RunService.class);
context.startService(serviceLauncher);
Log.v("TEST", "Service loaded at start");
}
}
谢谢
代码没错,LZ粗心了
注册中多了个“_“这样就是对的,
<action android:name="android.intent.action.BOOTCOMPLETED" />
pby_bob的答案没错,但是我想弄一个完整的答案,希望对以后再看到这个问题的人能有帮助。
在你的AndroidManifest.xml文件中,你需要下边这些:
1) 在你的 元素中:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2) 在你的元素(一定要给你的BroadcastReceiver用一个完全限定(或相对)的类名):
<receiver android:name="com.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
(你不需要android:enabled, exported等等, android的默认值是正确的。)
在MyBroadcastReceiver.java里:
package com.example;
public class MyBroadcastreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent startServiceIntent = new Intent(context, MyService.class);
context.startService(startServiceIntent);
}
}
最初的问题:
现在还不确定是否元素在元素里?
还不确定是否正确的给BroadcastReceiver指定了完全限定(或相对)的类名
在 中有个错误