Намерение не получено деятельностью - PullRequest
0 голосов
/ 03 марта 2011

У меня есть основное действие, которое запускает службу для поиска в Интернете в фоновом режиме, и я хотел бы, чтобы основное действие получило намерение, когда поиск будет завершен.

В своей основной деятельности я определил BroadcastReceiver и Intent Filter для прослушивания намерения «конец поиска»:

public class AgeRage extends Activity {


    // Listener to all results from background processes

    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {  
            if (intent.getAction().equals(ImageSearchService.SEARCH_RESULT_ACTION)) {
0);
                Toast.makeText(context,"Got " + i + "results", Toast.LENGTH_SHORT).show();
            }
            else Toast.makeText(context,"unknown intent", Toast.LENGTH_SHORT).show();


        }
    };

    IntentFilter receiverFilter = new IntentFilter ();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);


        // Register to image search service messages

        receiverFilter.addAction(ImageSearchService.SEARCH_RESULT_ACTION);
        registerReceiver(receiver,receiverFilter);

       ...

В сервисе я делаю поиск, и когда это делается, я отправляю Намерение:

public class ImageSearchService extends IntentService {

...

protected void onHandleIntent (Intent intent) {

... doing search ...

    Intent i = new Intent (this,AgeRage.class);
    i.setAction (SEARCH_RESULT_ACTION);
    i.putExtra(SEARCH_STATUS, (searchStatus ==SearchStatus.DONE) ? true:false);
    i.putExtra (SEARCH_RESULT_NUM, totalResultNum);
    i.putExtra (SEARCH_ID, searchID);
    sendBroadcast (i,null);
}

Но основная деятельность не получает намерения. Я знаю, что вызывается sendBroadcast, а OnReceive получателя нет (проверяется отладчиком).

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

Я что-то не так делаю?

Спасибо Исаак

1 Ответ

0 голосов
/ 03 марта 2011

Хорошо. Ну, я только что проверил мой, и мы делаем то же самое, однако ...

ImageSearchService.SEARCH_RESULT_ACTION

Попробуйте выполнить com.yourpackagename.ImageSearchSrvice.SEARCH_RESULT_ACTION

где SEARCH_RESULT_ACTION - открытая статическая строковая переменная. Посмотрим, поможет ли это.

Я думаю, что это должно быть название ДЕЙСТВИЯ. Также обратите внимание, что вы можете запустить точки останова и просто проверить журнал. сделайте intent.getAction () и распечатайте это вместо проверки внутри оператора if. Просто всегда распечатывай и смотри. Не нужно ломать внутри приемника, он через некоторое время рухнет.

...