我需要我的应用程序在重启设备后开始运行(在后台)。这是我到现在为止所得到的(在从这里获得了很多帮助后......)
这是我的BootUpReceiver使用broadcastreceiver:
public class BootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, RebootService.class);
serviceIntent.putExtra("caller", "RebootReceiver");
context.startService(serviceIntent);
}
}
这是服务类:
public class RebootService extends IntentService{
public RebootService(String name) {
super(name);
// TODO Auto-generated constructor stub
}
protected void onHandleIntent(Intent intent) {
Intent i = new Intent(getBaseContext(), MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
String intentType = intent.getExtras().getString("caller");
if(intentType == null)
return;
if(intentType.equals("RebootReceiver"))
getApplication().startActivity(i);
}
}
这是我的机器人清单:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name=".BootUpReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service android:name=".RebootService"/>
</application>
问题是,当我在手机上安装并重新启动时,应用程序崩溃:它说:“转移已停止工作”。按下确定按钮后,当我检查应用信息时,应用程序正在运行。
我是Android的新手,我不知道发生了什么。我应该添加更多权限吗?
请帮助。 TIA
答案 0 :(得分:0)
我认为你的问题在于你的RebootService构造函数。当系统调用它时,它不提供任何参数,因此它会崩溃。如果您查看日志,您可能会看到“无法实例化服务......”的效果。
尝试用以下代码替换构造函数:
public RebootService() {
super( "Reboot Service" );
}