Android BroadcastReceiver,设备重启后自动运行服务

你好我正在写一个应用程序,这是当手机重新启动,服务将自动启动,而不是点击应用程序。

这是我的代码

BootCompleteReceiver.java

package com.example.newbootservice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootCompleteReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent service = new Intent(context, MsgPushService.class); context.startService(service); } } 

MsgPushService.java

 package com.example.newbootservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast; public class MsgPushService extends Service { @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); return Service.START_STICKY; } @Override public void onDestroy() { super.onDestroy(); Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent arg0) { return null; } } 

MainActivity.java (不知道我是否需要这个)

 package com.example.newbootservice; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); startService(new Intent(getBaseContext(), MsgPushService.class)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

performance

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.newbootservice" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <service android:name=".MsgPushService"/> <receiver android:name=".BootCompleteReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

任何人都可以帮助我,我希望服务在重启后自动启动,而不是手动启动。 谢谢….

首先做这个

1)在你的<manifest>元素中:

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

编辑:

简单明智的解决scheme:

– > 设备启动时自动启动服务

你忘记了权限

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

也尝试这些权限,它可能会帮助你。你正在使用HTC手机然后这些权限是必需的

 <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.QUICKBOOT_POWERON"/>