我正在尝试在启动时启动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>
答案 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);
}