从StartReceiver Crashing启动Android启动应用程序

时间:2011-03-16 20:41:04

标签: android crash boot

我正在尝试在启动时启动Android 2.1 Galaxy S手机,它崩溃了。

这是我的接收器,如果我注释掉context.startActivity(i)我不会崩溃,否则我会在通电时看到它。来自使用相同ACTION的另一个活动的startActivity不会导致崩溃。这似乎只是在Boot。

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent();
        i.setAction("DISPLAY_FIRSTPAGE");
        context.startActivity(i);
    }
}

我在清单中设置了一个接收器:

<receiver android:name=".MyBroadcastReceiver">
             android:enabled="true" android:exported="false"
             android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter> 
</receiver>

3 个答案:

答案 0 :(得分:2)

你显然没有告诉它要启动什么(除非你指定你的活动在清单中处理DISPLAY_FIRSTPAGE意图,这不是一个好主意)。尝试以下方面:

Intent i = new Intent(context, MyActivity.class);
context.startActivity(i);

答案 1 :(得分:2)

首先请先查看日志。在这种情况下,问题(包括原始代码和固定代码)将在日志崩溃中得到很清楚的解释。

答案 2 :(得分:0)

这对我有用:

    Intent i = new Intent(context, MyService.class);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        context.startForegroundService(i);
    } else {
        context.startService(i);
    }