2011-04-20 224 views
3

我想用如何使用sendOrderedBroadcast功能

context.sendOrderedBroadcast(intent, receiverPermission)context.sendBroadcast(intent, receiverPermission);

在我的应用程序 但我不知道通过receiverPermission参数的功能,以及如何在清单文件中设置 请任何身体帮我

我想告诉你,我的源代码

public class LocationReceiver extends BroadcastReceiver { 
    public static final String BROADCAST_ACTION = "LOCATION_CHANGE"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     intent.setAction(BROADCAST_ACTION); 
     Bundle b = intent.getExtras(); 
     Location loc = (Location)b.get(android.location.LocationManager.KEY_LOCATION_CHANGED); 
     Logger.debug("Loc:"+loc); 
     if(loc != null){ 
      doBroadCast(context,intent,loc); 
     } 
    } 

    public void doBroadCast(final Context context,final Intent i1,final Location loc){ 
     Handler h = new Handler(); 
     h.post(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       Logger.debug("LocationReceiver->sendLocation update broadcast"); 
       i1.putExtra("Latitude", loc.getLatitude()); 
       i1.putExtra("Longitude", loc.getLongitude()); 
       context.sendBroadcast(i1,null); 
      } 
     }); 
    } 
} 

和活动我写

@Override 

     protected void onResume() { 
      registerReceiver(broadcastReceiver, new IntentFilter(LocationReceiver.BROADCAST_ACTION)); 
} 

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       UpdateUI(intent); 
      } 
     }; 

     private void UpdateUI(Intent i){ 
      Double Latitude = i.getDoubleExtra("Latitude",0); 
      Double Longitude = i.getDoubleExtra("Longitude",0); 
      showMap(Latitude, Longitude); 
     } 

现在我的问题是,当它sendbroadcast它infinitly执行了DoBroadcast()函数,请帮我走出来。

回答

0

Please refer SDK document

receiverPermission是(可选)字符串命名的权限,一个接收器必须以收到您的广播举行。如果为null,则不需要权限。

AndroidManifest.xml use.这是在String上。该字符串使用sendOrderedBroadcast的receiverPermission。值。