Страница 1 из 1

Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 10:41
grem17
при вызове Activity из другой Activity хорошо работает код

Код: Выделить всё

            Intent mIntent = new Intent(context, NewActivity.class);
            startService(mIntent);
я же пытаюсь сделать вызов Activity из Broadcast, не получается, попросту ни чего не происходит на экране

Код: Выделить всё

public class MessageReceiver extends BroadcastReceiver {
	public void onReceive(Context context, Intent intent) {
	.............         
            Intent mIntent = new Intent(context, NewActivity.class);
            context.startService(mIntent);
	}
	}
}
в манифесте активити который хочу вызвать - зарегистрирован

Код: Выделить всё

        <activity android:name=".AddEdit"
            android:label="@string/title_add_edit"
            android:theme="@android:style/Theme.Dialog">
        </activity>     

Re: Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 11:23
klblk
Activity или все-таки Service? Говорите одно, а в коде другое, а в xml третье.

Re: Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 12:16
grem17
да я просто эксперементирую с разными вариантами, не тот код добавил...
надо вызвать из броадкаста активити...
как это сделать?

код переписывать думаю не надо и так понятно что
startService
заменить на startActivity

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

Re: Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 13:33
klblk
0) Запускать активити из броадкаста не лучший кейс. Пользователь будет не рад.
1) У меня запустилось с флагом:
[syntax=java]intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);[/syntax]
собственно перед этим не запустилось и мне честно написали в логкат что нужен этот флаг.
2) Точно ли исполняется код ресивера?
3) Все еще есть косяки в коде. Имя активити в манифесте не соответствует тому что вы пытаетесь вызвать (хотя может это опять таки остатки от сервиса).

Re: Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 14:09
grem17
все равно не получается

вот обработка броадкаста, перехватываю сообщение, вывожу для теста строчку "sssssssssssssss" через Toast (работает нормально), но вот активити не запускается
дальнейшую обработку прервыаю через abortBroadcast (пробовал и не прерывать все равно так же)

Код: Выделить всё

public class MessageReceiver extends BroadcastReceiver {
	public void onReceive(Context context, Intent intent) {
		
		Intent mIntent = new Intent(context, AddEdit.class); 
		mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		
		Toast.makeText(context, "sssssssssss", Toast.LENGTH_LONG).show();	

		abortBroadcast();
	}
}
вот манифест

Код: Выделить всё

....
          <uses-permission android:name="android.permission.RECEIVE_SMS" />
....

        <activity android:name=".AddEdit"
            android:label="@string/title_add_edit"
            android:theme="@android:style/Theme.Dialog">
        </activity>     
        
        <receiver
            android:name="com.test.MessageReceiver">
            <intent-filter android:priority="999" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" >
                </action>
            </intent-filter>
        </receiver>
........

Re: Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 14:15
klblk
Вот что-нибудь да не так напишите) startActivity не вижу в последней версии.
Ошибка имеется при этом? или просто молча ничего не делает?

Re: Вызов Activity из Broadcast

Добавлено: 09 окт 2014, 14:35
grem17
ес, круто, заработало, спасибо =)