Android-приложение запускается при загрузке с BroadcastReceiver Crashing - PullRequest
1 голос
/ 16 марта 2011

Я пытаюсь запустить мой Android 2.1 Galaxy S Phone при загрузке, и он вылетает.

Вот мой приемник, если я закомментирую context.startActivity. (I) У меня не происходит сбой, в противном случае я вижу его при включении. 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>

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Пожалуйста, сначала посмотрите на журнал, прежде чем что-либо еще.В этом случае проблема (как с вашим исходным кодом, так и с вашим фиксированным кодом) будет довольно четко объяснена в сбое журнала.

2 голосов
/ 16 марта 2011

Вы явно не говорите, что нужно запускать (если вы не укажете, что ваша активность обрабатывает DISPLAY_FIRSTPAGE намерений в манифесте, что не будет хорошей идеей). Попробуйте что-то вроде:

Intent i = new Intent(context, MyActivity.class);
context.startActivity(i);
0 голосов
/ 23 августа 2018

Вот что у меня сработало:

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