2016-01-12 2 views
-1

У меня такая проблема - «моя трансляция» не получает никакой информации. Что я делаю неправильно?Android Broadcast не работает


Пример кода
Моя деятельность с регистрацией Broadcast:
Основная деятельность

 DriverCheckBroadcast broadcast = new DriverCheckBroadcast(this); 
    IntentFilter intFilt = new IntentFilter("MY_BROADCAST_CHECK"); 
    // регистрируем (включаем) BroadcastReceiver 
    registerReceiver(broadcast, intFilt); 

    startService(new Intent(this, DriverCheckService.class)); 


Methode, которые ставят посылки Broadcast

@Override 
     public void onResponse(Response<Example> response, Retrofit retrofit) { 

      Example result = response.body(); 
      LatLng driverlatlang = new LatLng(result.getGpsLatitude(),result.getGpsLongitude()); 

      intent.putExtra("address",customizeText(result.getAddress())); 
      intent.putExtra("latlng",driverlatlang); 
      intent.putExtra("model",result.getModel().getName()); 
      intent.putExtra("brand",result.getModel().getIdBrand()); 
      status = result.getStatusName(); 
      service.sendBroadcast(intent); 
     } 


Methode, которые получают посылки в Broadcast

@Override 
public void onReceive(Context context, Intent intent) { 
    activity.driverlatlang = intent.getParcelableExtra("latlang"); 
    activity.model.setText((CharSequence) intent.getParcelableExtra("model")); 
    activity.brand.setText((CharSequence) intent.getParcelableExtra("brand")); 
    activity.address.setText((CharSequence) intent.getParcelableExtra("address")); 
} 
+0

как вы создаете 'Intent' вы используете в' sendBroadcast '? – pskink

+0

вы используете неправильную пару Bundle.put/Bundle.get ... спросили bazillion раз ... если вы поместите String с putExtra, тогда вы должны использовать getStringExtra – Selvin

+0

проверить мой ответ .. Я делаю так. Http:// /stackoverflow.com/a/34740462/3713967 –

ответ

0

Вам необходимо установить действие при отправке трансляции.

Попробуйте:

Intent intent = new Intent(); 
intent.setAction("MY_BROADCAST_CHECK"); 

Поскольку ваши аспекты Тип приемника: MY_BROADCAST_CHECK но при отправке трансляции вы не дали, поэтому приемник не получает никакой информации.

-1

Вы должны получить данные от intent используя Bundle так:

@Override 
public void onReceive(Context context, Intent intent) { 
// TODO Auto-generated method stub 
Bundle extras = intent.getExtras(); 
if (extras != null) { 

    Object value1=extras.get("latlang"); 
    Object value2=extras.get("model"); 
    Object value3=extras.get("brand"); 
    Object value4=extras.get("address"); 
} 

} 

, а затем соответственно settext значение х.

0

создать намерение и отправить широковещательных этот путь

Intent i = new Intent("a"); 
Bundle bundle = new Bundle(); 
bundle.putString(USER_ID, user_id); 
i.putExtras(bundle); 
mContext.sendBroadcast(i); 

декларацию о намерениях фильтра

IntentFilter filter = new IntentFilter(); 
filter.addAction("a"); 
filter.addAction("b"); 
filter.addAction("c"); 

получать широковещательные

registerReceiver(new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent intent) { 
        try { 
         if(intent.getAction().equals("a")) 
         goToPage(new a()); 
         if(intent.getAction().equals("b")) 
         { 
          // you can call other event and function here 
          Fragment fragment = new b(); 
          Bundle bundle = intent.getExtras(); 
          fragment.setArguments(bundle); 
          goToPage(fragment); 
         } 
         if(intent.getAction().equals("c")) 
         { 
          // you can call other event and function here 
          Fragment fragment = new c(); 
          Bundle bundle = intent.getExtras(); 
          fragment.setArguments(bundle); 
          goToPage(fragment); 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 
      }, filter); 
Смежные вопросы