Добавление списка результатов сканирования из Wi-Fi в намерение и получение из приемника вещания? - PullRequest
0 голосов
/ 10 сентября 2011

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

//In my Main File: Everthing is registered and working. 
IntentFilter startUsingScanResults = new IntentFilter("StartUsingScanResults");
c.registerReceiver(serviceConsume.ScanResultReceiver, startUsingScanResults); 

List<ScanResult> scanResults = Some values; 
Intent intent = new Intent();
intent.setAction("StartUsingScanResults");

// Then Need to put the List<ScanResults> into the intent.
// ie: intent.putExtra("MyResults", scanResults);

Context.sendBroadcast(intent);

// Мой широковещательный приемник, в котором должен быть список.

    public BroadcastReceiver ScanResultReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            Bundle extras = intent.getExtras();

            // Need something here to get the list 
            // ie: List<ScanResult> scanResults = extras.getBundle("MyResults"); 
}
};

Надеюсь, у меня возник вопрос с этим вопросом.Мне просто нужно поместить список в и получить список из пакета (или намерения).

ScanResult имеет формат ["", "", "", "", "", ""," "] если это поможет.Поэтому я думаю, что это может быть похоже на многомерный массив.

Любая помощь приветствуется!Спасибо

1 Ответ

0 голосов
/ 10 сентября 2011

Я понял это.Мне нравятся простые решения, и это довольно просто.

intent.putParcelableArrayListExtra ("ScanResults", (ArrayList) scanResults);

и добавить это в приемник Broadcast

ArrayList scanResults = extras.getParcelableArrayList ("ScanResults");

Итак, конечный результат:

//In my Main File:
IntentFilter startUsingScanResults = new IntentFilter("StartUsingScanResults");
c.registerReceiver(serviceConsume.ScanResultReceiver, startUsingScanResults); 

List<ScanResult> scanResults = Some values; 
Intent intent = new Intent();
intent.setAction("StartUsingScanResults");

intent.putParcelableArrayListExtra("ScanResults", (ArrayList<? extends Parcelable>) scanResults);

Context.sendBroadcast(intent);

// And my broadcast receiver 
   public BroadcastReceiver ScanResultReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            Bundle extras = intent.getExtras();
    ArrayList<ScanResult> scanResults = extras.getParcelableArrayList("ScanResults");
}
};

Надеюсь, это поможет кому-то в подобной ситуации.

...