问题描述
- 想要在启动android的时候启动一个服务
-
当一个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指定了完全限定(或相对)的类名
在 中有个错误
时间: 2025-01-23 08:33:25