4

データをダウンロードするためのインテントサービスを作成し、ブロードキャスト受信とアラームマネージャーで繰り返したいのですが、インテントサービスを呼び出すにはどうすればよいですか?これを試しましたが、機能しません...

public class MyBroadcastReceiver extends BroadcastReceiver {


    @Override

      public void onReceive(Context context, Intent intent) {

          Toast.makeText(context, "Don't panik but your time is up!!!!.",
            Toast.LENGTH_LONG).show();
        // Vibrate the mobile phone
        Vibrator vibrator = (Vibrator)   
context.getSystemService(Context.VIBRATOR_SERVICE);
        vibrator.vibrate(500);

        intent.setData(Uri.parse("http://www.mysite.net/LEDstate.txt"));
        intent.putExtra("urlpath", "http://www.mysite.net/LEDstate.txt");
        //startService(intent);

        context.startService(new Intent(context, DownloadService.class));

        }

パブリッククラスAlarmActivityはActivity{を拡張します

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void startAlert(View view) {

    EditText text = (EditText) findViewById(R.id.time);

    int i = Integer.parseInt(text.getText().toString());

    Intent intent = new Intent(this, MyBroadcastReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    //alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
       // + (i * 1000),pendingIntent);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                 ,(i*1000),pendingIntent);

   // alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar
    //      .getTimeInMillis(), intervals, pendingIntent);


    Toast.makeText(this, "Alarm set in " + i + " seconds",
        Toast.LENGTH_LONG).show();
  }
4

4 に答える 4

3

これを試して:

Intent newIntent = new Intent(context, DownloadService.class)
newIntent.setData(Uri.parse("http://www.mysite.net/LEDstate.txt"));
newIntent.putExtra("urlpath", "http://www.mysite.net/LEDstate.txt");


context.startService(newIntent);
于 2012-12-07T12:44:37.040 に答える
0

あなたのコードでは、あなたはあなたのに余分なデータを渡していないService。オブジェクトにデータとエクストラを追加して、別のオブジェクトをメソッドIntentに渡します。他の投稿で@Zzokkによって提案された解決策を使用してください、それはうまくいくはずです。IntentstartService()

于 2012-12-07T12:49:19.830 に答える
0

ブロドキャストが受信されると、ブロードキャストアクティビティが呼び出されます。

その時点で、必要に応じて任意のアクティビティを呼び出すことができます。

以下のコードを参照してください。

 @Override
    public void onReceive(Context context, Intent intent) {

        AM_EM_APRIL_2012 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
                Intent in1 = new Intent(context, AlarmReceiverNotificationForEveryMonth.class);
                in1.putExtra("MyMessage","PAYE payment and employer monthly schedule for March");
                PI_EM_APRIL_2012 = PendingIntent.getBroadcast(context, 1, in1, PendingIntent.FLAG_UPDATE_CURRENT);
                AM_EM_APRIL_2012.set(AlarmManager.RTC_WAKEUP, calendar_PAYE_20_APRIL_2012.getTimeInMillis(),PI_EM_APRIL_2012);
            }

上記のコードでは、AlarmReceiverNotificationForEveryMonth.classは呼び出されたアクティビティであり、メッセージのブロードキャスト中にアクティビティを呼び出したい場合は、これを実行する必要があります。その時、あなたはあなたが望むようにそれぞれのサービスを始めることができます。

あなたが私のポイントを得たことを願っています。

于 2012-12-07T12:50:57.507 に答える