Запуск активности из приемника braodcast, зарегистрированного в контексте приложения - PullRequest
0 голосов
/ 02 марта 2012

Я хочу запустить действие из приемника вещания для пользовательских намерений.Я не хочу нескольких экземпляров этого действия, поэтому я не использую новый флаг задачи.

Я зарегистрировал эти получатели в манифесте.Я получаю сообщение об ошибке

"03-02 12:54:58.634: W/System.err(3763): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?"  

Где мне зарегистрировать мои получатели? При попытке регистрации в действии получатель может запустить действие.
Что может быть не так при регистрации в манифесте

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Пожалуйста, используйте следующий код,

public void onReceive(Context context, Intent intent)
{
    System.out.println ( "Application Started" );
    // put your TimerTask calling class here

    try
    {
        Intent myIntent = new Intent ( context, AutoStartExampleActivity.class );
        myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myIntent);
    }
    catch ( Exception e )
    {
        System.out.println ( " Error while Starting Activity " + e.toString() );
    }
}
1 голос
/ 02 марта 2012

Это потому, что Activity переопределяет метод startActivity() Context, поэтому, если вы вызовете startActivity() в Activity, проблем не будет, но если вы вызовете его из context, выследует добавить флаг FLAG_ACTIVITY_NEW_TASK к цели.

0 голосов
/ 02 марта 2012

Регистрация получателя в файле манифеста Android

<receiver android:name="com.example.XYZReceiver"></receiver>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...