1

私は最初のアプリに取り組んでおり、私の目的は、ユーザーが設定した日時に開始し、最初に設定された時間に一連の事前定義された SMS を送信することです (つまり、最初の SMS が送信され、2 番目の SMS が +3 分に送信され、 +7 分で送信される 3 番目の SMS など)。さまざまな保留中のリクエスト コードを使用してすべてのアラームを一度に設定し、メッセージごとに複数のブロードキャスト レシーバーを設定することでこれを行うことができましたが、効率的ではないようです。同じリクエストコードを再利用して(シリーズのキャンセルを可能にする)、同じ受信機から各ブロードキャストを受信した後にアラームを設定することはできますか? 以下のコード、どんな提案も歓迎します。

主な活動

            Intent intent = new Intent(MainActivity.this,
                    Receiver1.class);
            intent.putExtra(EXTRA_MESSAGE1, message1);
            intent.putExtra(EXTRA_NUMBER, number);

            Intent intent2 = new Intent(MainActivity.this,
                    Receiver2.class);
            intent2.putExtra(EXTRA_MESSAGE2, message2);
            intent2.putExtra(EXTRA_NUMBER, number);

            PendingIntent sender = PendingIntent.getBroadcast(
                    MainActivity.this, 1, intent, 0);

            PendingIntent sender2 = PendingIntent.getBroadcast(
                    MainActivity.this, 2, intent2, 0);

            // Set alarm for this time
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.YEAR, mYear);
            cal.set(Calendar.MONTH, mMonth);
            cal.set(Calendar.DAY_OF_MONTH, mDay);
            cal.set(Calendar.HOUR_OF_DAY, mHour);
            cal.set(Calendar.MINUTE, mMinute);

            // Schedule alarm
            AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

            AlarmManager am2 = (AlarmManager) getSystemService(ALARM_SERVICE);
            am2.set(AlarmManager.RTC_WAKEUP,
                    cal.getTimeInMillis() + 30 * 1000, sender2);

受信機 1

public class Receiver1 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE1);
    String number = intent.getStringExtra(MainActivity.EXTRA_NUMBER);

    sendSMS(number, message);
};

// ---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message) {
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);
};
}

受信機 2

public class Receiver2 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE2);
    String number = intent.getStringExtra(MainActivity.EXTRA_NUMBER);

    sendSMS(number, message);
};

// ---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message) {
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);
};
}
4

2 に答える 2

0

以下のコードは私にとってはうまくいきます...

Thread t = new Thread(new Runnable() {


        @Override
        public void run() {
            // TODO Auto-generated method stub
            try {

                                   for (int count = 1; count <= total_sms; count++) {
                                    Log.i("----------------ppp------------",
                                            "-----working-----------" + count);
                                    SmsManager smsManager = SmsManager.getDefault();
                                    smsManager.sendTextMessage(number1, null,
                                            "Hai this is to test duration", null, null);
                                    Log.i("SMS_COUNT", "Number of sms send---" +count);
                                    Thread.sleep(1000 * (Integer.parseInt(delay)));

                                }

                                 } catch (Exception e) {
                                           e.printStackTrace();
                                 }

        }
    }
    );
    t.start();
于 2014-01-23T06:10:16.753 に答える
0

「状態」をファイル、共有設定、または sqlite データベースに保存します。次に、アプリが起動したときに一連の作業を行うだけで、1 つのアラームとブロードキャスト レシーバーに取り掛かることができます。

ここに単純な SharedPreferences の例があります。

Android 共有設定

于 2013-02-24T14:45:39.517 に答える