2016-01-12 45 views
-1

我有这样的问题 - “我的广播”没有收到任何信息。我做错了什么?Android广播不起作用


代码示例
我与广播注册活动:
主要活动

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

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


了Methode是把包裹广播

@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是让包裹在广播

@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次...如果你把字符串putExtra那么你应该使用getStringExtra – Selvin

+0

检查我的答案..我正在这样做.. http:///stackoverflow.com/a/34740462/3713967 –

回答

0

您需要在发送广播时设置操作。

试试这个

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

因为你的接收器方面键入:MY_BROADCAST_CHECK但是当你发送广播你没有给任何,这就是为什么你的接收机没有得到任何信息。

-1

你应该使用Bundle这样intent接收数据:

@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);