1

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

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

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>
4

3 回答 3

2

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

Intent i = new Intent(context, MyActivity.class);
context.startActivity(i);
于 2011-03-16T20:50:04.650 回答
2

请先查看日志,然后再查看其他内容。在这种情况下,问题(包括原始代码和固定代码)将在日志中的崩溃中得到非常清楚的解释。

于 2011-03-16T22:19:52.343 回答
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);
    }
于 2018-08-23T14:08:14.740 回答