java - 如何像这样频繁地发送短信(每天、每周、每 5 分钟、每小时)

标签 java android sms alarmmanager

我想像所讨论的那样频繁发送短信;我正在使用 spinner 选项和一些类似的选项(每日、每周、每 5 分钟),同时我在这些 spinner 中选择任何选项必须这样。

Alaramsms.java:

 private String[] Time_CATEGORY = { "Once","Every hour","Every day", "Weekdays(Mon-Fri)", "Weekend", "Every month", 
                "Every year" };

       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) 
       {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
    edittextSmsNumber = (EditText)findViewById(R.id.smsnumber);
        edittextSmsText = (EditText)findViewById(R.id.smstext);
           ImageButton get = (ImageButton)findViewById(R.id.getc);
           spinnerTime = (Spinner) findViewById(R.id.spinnerstate);

            ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, Time_CATEGORY);
            adapter_state
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

           Button buttonStart = (Button)findViewById(R.id.startalarm);
           Button buttonCancel = (Button)findViewById(R.id.cancelalarm);


           spinnerTime.setOnItemSelectedListener(new OnItemSelectedListener() 
        {
        public void onItemSelected(AdapterView<?> parent, View view, int position,
                long id) {

            spinnerTime.setSelection(position);
            //spinnerCapital.setSelection(position);

            String myPrayer = (String) spinnerTime.getSelectedItem();


        }

        public void onNothingSelected(AdapterView<?> parent) {

        }});




           get.setOnClickListener(new OnClickListener()
           {

          @Override
          public void onClick(View v) {
              // TODO Auto-generated method stub
              Intent i = new Intent(AndroidAlarmSMS.this, ContactActivity.class);
              startActivityForResult(i, ResultCode);
          }

       });

           buttonStart.setOnClickListener(new Button.OnClickListener(){

       @Override
       public void onClick(View arg0) {
        // TODO Auto-generated method stub
        smsNumber = edittextSmsNumber.getText().toString();
        smsText = edittextSmsText.getText().toString();

        picker = new Dialog(AndroidAlarmSMS.this);
        picker.setContentView(R.layout.picker_frag);
        picker.setTitle("Select Date and Time");

        datep = (DatePicker)picker.findViewById(R.id.datePicker);
        timep = (TimePicker)picker.findViewById(R.id.timePicker1);
        set = (Button)picker.findViewById(R.id.btnSet);



        set.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                if (TextUtils.isEmpty(smsNumber))
                {

                        finish();
                }

                else
                {
                    String[] s =edittextSmsNumber.getText().toString().split(";");          


                for(int i=0 ;i<s.length;i++)
                {
                picker.dismiss();



        Intent myIntent = new Intent(AndroidAlarmSMS.this, MyAlarmService.class);

        Bundle bundle = new Bundle();
                 bundle.putCharSequence("extraSmsNumber", smsNumber);
                 bundle.putCharSequence("extraSmsText", smsText);
                 myIntent.putExtras(bundle);

        pendingIntent = PendingIntent.getService(AndroidAlarmSMS.this, 0, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);


        Calendar calendar = Calendar.getInstance();

        calendar.set(datep.getYear(), datep.getMonth(), datep.getDayOfMonth(), 
                timep.getCurrentHour(), timep.getCurrentMinute(), 0);
       // long startTime = calendar.getTimeInMillis();        

             //   Calendar calendar = Calendar.getInstance();
                // calendar.setTimeInMillis(System.currentTimeMillis());
               // calendar.add(Calendar.SECOND, 60);
                 alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

                 Toast.makeText(AndroidAlarmSMS.this,
                   "Start Alarm with \n" +
                   "smsNumber = " + smsNumber + "\n" +
                   "smsText = " + smsText,
                   Toast.LENGTH_LONG).show();
                }
                }

            }
        });

                picker.show();


       }});

           buttonCancel.setOnClickListener(new Button.OnClickListener(){

       @Override
       public void onClick(View arg0) {
        // TODO Auto-generated method stub
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
        Toast.makeText(AndroidAlarmSMS.this, "Cancel!", Toast.LENGTH_LONG).show();

       }});
       }

       protected void onActivityResult(int requestCode, int resultCode, Intent data) {

              if (requestCode == ResultCode) {

                 if(resultCode == RESULT_OK){      
                     sendlist  =data.getStringArrayListExtra("name");
                     if(sendlist!=null)
                        {
                        for(int i=0;i<sendlist.size();i++)
                        {
                            edittextSmsNumber.append(sendlist.get(i).toString());
                            edittextSmsNumber.append(";");
                        }

                 }
                 if (resultCode == RESULT_CANCELED) {    

                 }
              }
            }
        }

现在我正在使用调度时间发送短信;现在正在用户选择的时间进行。但我想根据 spinner 选择发送 sms

最佳答案

您需要使用setInexactRepeating方法

例如,设置闹钟“每天”:

 alarmMgr0 .setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
        SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY,
        AlarmManager.INTERVAL_DAY, intent);

关于java - 如何像这样频繁地发送短信(每天、每周、每 5 分钟、每小时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20281363/

相关文章:

Android:如何将 CheckBox 文本重心设置为整个控件的中心?

java - 虽然直接调用会抛出java.lang.NoSuchMethodError,但是可以通过反射来调用该方法

java - 在 switch case 语句中使用方法

java - Swing 中的 JFormattedTextField 或 JTextField 中仅允许整数和小数值

android - 更新后需要清除数据,否则应用程序将无法运行

android - 基于 Activity 的应用程序可以没有 Activity 吗?

android - 从交易短信中获取商家名称 - Android

python - 如何在我的网络应用程序中启用短信通知?

spring - 我如何从spring boot应用程序向手机发送短信

java - 下载为具有自定义文件夹类型的 Zip 文件夹