2

重新启动设备后,我需要我的应用程序开始运行(在后台)。这是我到现在为止的想法(在从这里得到了很多帮助之后......)

这是我使用广播接收器的 BootUpReceiver:

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);            
    }
}

这是我的 android 清单:

<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

4

1 回答 1

0

我认为您的问题在于您的 RebootService 构造函数。当系统调用它时,它不提供任何参数,所以它会崩溃。如果您查看日志,您可能会看到类似“无法实例化服务...”的内容

尝试将您的构造函数替换为:

public RebootService() {
    super( "Reboot Service" );
}
于 2012-10-14T16:41:34.130 回答