如何将变量传递给广播接收器?

时间:2013-01-16 09:48:52

标签: android broadcastreceiver alarmmanager

从主要活动我打电话给带有警报管理器的广播接收器以启动重复功能。我也创建了一段时间的分享偏好。如何将周期时间整数传递给另一个类广播接收器?

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

    SharedPreferences preferences = getSharedPreferences("dataiowebusb" ,  VATE);


      String strUpdatetime = preferences.getString("Period","3");

      text5.setText(strUpdatetime);

      Tperiod =Integer.parseInt(strUpdatetime);

        if(Tperiod>1200){
            Tperiod=1200;//20min
        }

        sendBroadcast(new Intent(this,MyScheduleReceiver.class));//Call ala   

}

    public class MyScheduleReceiver extends BroadcastReceiver {

public static int period=20;

private static final long REPEAT_TIME = 1000 * period;
public void onReceive(Context context, Intent intent) {

AlarmManager service = (AlarmManager) context
    .getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyStartServiceReceiver.class);

如果我在广播接收器类中使用共享首选项,则会出现错误MODE_PRIVATE ..

3 个答案:

答案 0 :(得分:1)

您可以使用Intent属性及其访问方法putExtraextras对象上传递数据,并使用getIntExtra检索数据。

因此,您的调用代码应如下所示:

Intent intent=new Intent(this,MyScheduleReceiver.class)
intent.putExtra("PERIOD", Tperiod);
sendBroadcast(intent);//Call ala   

要使用接收方onReceive方法退出:

int tPeriod= intent.getIntExtra("PERIOD", 1200); //taking 1200 as a default value, used if no "PERIOD" Bondle is found at the Intent extras.

答案 1 :(得分:1)

创建Intent时将一些数据放入bundle(Extras)

new Intent(this, SomeClass.class).putExtra("someKey", someValue);

在broadcastReceiver上,从intent onReceive方法

读取数据
intent.getExtras().getInt("someKey")

答案 2 :(得分:0)

将你的价值放在额外的意图中。

Intent i = new Intent(context,MyStartServiceReceiver.class); i.putextra( “钥匙”,值);