3

特定の電話番号にSMSを送信する必要があるアプリケーションを開発しています。次のコードを使用してSMSを送信できます。

try {
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                Toast.makeText(getApplicationContext(), "SMS Sent!",
                        Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(),
                        "SMS faild, please try again later!",
                        Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }

今私が欲しいのはSMSが自動的に行くべきだということです。メッセージが自動的に送信される時刻はMySQLデータベースに保存されているため、その時刻が来たときにチェックを続け、メッセージをその番号に自動的に送信するコードが必要です。それは一種のリマインダーです。ユーザーは、アプリケーションでリマインダーを保持します。1時間後にメッセージを受け取る必要があります。したがって、1時間後にメッセージが表示されます。PLzヘルプ??

ついにできた。

/** Code For reminder is here */
            int time=Integer.parseInt(answer);
            int num = (int)System.currentTimeMillis();  
            Intent intent = new Intent(getApplication(), MyBroadcastReceiver.class);
            intent.putExtra("phoneNo",phoneNo);   
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.add(Calendar.MINUTE, time);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(
                getApplicationContext(), num, intent, 0);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + calendar.getTimeInMillis() , pendingIntent);
            Toast.makeText(getApplication(), "Alarm set in " + time + " minutes",
            Toast.LENGTH_SHORT).show();
            /** Code for reminder is over */

そして私の受信者コードは

 public void onReceive(Context context, Intent intent) {
    String sms= "Your turn is about to come. Please be ready. Thank You";
    String phoneNo;
    Bundle extrasBundle = intent.getExtras();
    phoneNo=extrasBundle.getString("phoneNo");
    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, sms, null, null);
        Toast.makeText(context, "SMS Sent to " + phoneNo,Toast.LENGTH_LONG).show();
        } catch (Exception e) {
        Toast.makeText(context,"SMS faild, please try again later!",Toast.LENGTH_LONG).show();
        e.printStackTrace();
        }

}

誰かがこれを必要とするかもしれない場合に備えて...ありがとう

4

2 に答える 2

3

この目的にはAlarmManagerを使用してください。レシーバーを作成し、マニフェストファイルに登録します。alarmaManagerを使用すると、特定の時間の後にアラームを設定します。SendSMSコードをReceiverの受信時に配置します。

編集:私はこれまでずっと前に答え​​ました、それは現在のシナリオには適していません、代わりにより良い代替案のためにこのブログを読んでくださいバックグラウンドスケジューラ

于 2012-07-10T09:12:04.970 に答える
2

Alarmmanager は、特定の時間に呼び出すのに役立ちます。AlarmManager を使用して、送信メッセージのすべてのコードを BroadcastReceiver の OnReceivemethod に配置します。このリンクに従ってください。また、マニフェスト ファイルを変更することも忘れないでください。ではごきげんよう :)

于 2012-07-10T09:18:05.797 に答える