0

メイン アクティビティから、アラーム マネージャーを使用してブロードキャスト レシーバーを呼び出し、リピート機能を開始します。期間の共有設定も作成します。ピリオド時間整数を別のクラスのブロードキャスト レシーバに渡すにはどうすればよいですか?

  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 というエラーが発生します。

4

3 に答える 3

1

インテントを作成するときに、いくつかのデータをバンドルに入れます (Extras)

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

BroadcastReceiver の場合、intent onReceive メソッドからデータを読み取ります

intent.getExtras().getInt("someKey")
于 2013-01-16T09:58:57.600 に答える
1

属性とそのアクセサ メソッドputExtraを使用してIntentオブジェクトにデータを渡し、 getIntExtraでデータを取得できます。extras

したがって、呼び出しコードは次のようになります。

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.
于 2013-01-16T09:56:52.237 に答える
0

インテント エクストラに値を入れます。

Intent i = new Intent(context, MyStartServiceReceiver.class); i.putextra("キー",値);

于 2013-01-16T09:56:17.643 に答える