2 xiaoxiaoaishang xiaoxiaoaishang 于 2012.10.23 11:43 提问

想要在启动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");
  }
}

谢谢

2个回答

pby_bob
pby_bob   2012.10.23 12:42
已采纳

代码没错,LZ粗心了
注册中多了个“_“这样就是对的,
<action android:name="android.intent.action.BOOTCOMPLETED" />

xiaoxiaoaishang
xiaoxiaoaishang 啊!谢谢指出,我查了半天都没查出来
大约 5 年之前 回复
niangzhi
niangzhi   2012.10.23 13:37

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指定了完全限定(或相对)的类名
在 中有个错误

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!