2017-11-01 12 views
0

나는 주어진 시간과 날짜에 날짜 선택 도구와 시간 선택 도구를 사용하여 안드로이드에서 메시지를 예약하고 싶습니다.주어진 시간과 날짜에 메시지를 예약하는 방법은 무엇입니까?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mEditText = (EditText) findViewById(R.id.username); 
    msendSms = (EditText) findViewById(R.id.sendssms); 
    mEditText.setOnTouchListener(new RightDrawableOnTouchListener(mEditText) { 
     @Override 
     public boolean onDrawableTouch(MotionEvent event) { 
      mEditText.setText(""); 
      Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
      startActivityForResult(intent, PICK_CONTACT); 
      return true; 
     } 
    }); 

    pickdate = (Button) findViewById(R.id.pickdate); 
    pickdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      datepicker(); 
     } 
    }); 
    pickTime = (Button) findViewById(R.id.pickTime); 
    pickTime.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Calendar mcurrentTime = Calendar.getInstance(); 
      int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
      int minute = mcurrentTime.get(Calendar.MINUTE); 
      mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
        pickTime.setText(selectedHour+ ":" +selectedMinute); 
       } 
      }, hour, minute,false); 
      mTimePicker.setTitle("Select Time"); 
      mTimePicker.show(); 
     } 
    }); 


    ScheduleMesage = (Button) findViewById(R.id.scheduleMsg); 
    ScheduleMesage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      phoneNo = mEditText.getText().toString().trim(); 
      message = msendSms.getText().toString().trim(); 
      SmsManager smsManager=SmsManager.getDefault(); 
      smsManager.sendTextMessage(phoneNo, null, message, null, null); 
      Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show(); 

     } 
    }); 
} 

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
     case (PICK_CONTACT): 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor c = managedQuery(contactData, null, null, null, null); 
       if (c.moveToFirst()) { 
        String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 

        String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

        if (hasPhone.equalsIgnoreCase("1")) { 
         Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null); 
         phones.moveToFirst(); 
         String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         cNumber = cNumber.replaceAll("[\\D]", ""); 
         if (cNumber.length() >= 10) { 
          cNumber = cNumber.substring(cNumber.length() - 10); 
         } 

         Toast.makeText(getApplicationContext(), cNumber, Toast.LENGTH_SHORT).show(); 

         String nameContact = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

         mEditText.setText(nameContact + " " + cNumber); 
        } 
       } 
      } 
    } 
} 


@TargetApi(Build.VERSION_CODES.N) 
private void datepicker() { 
    Calendar calendar = Calendar.getInstance(); 
    final int mYear = calendar.get(Calendar.YEAR); 
    final int mMonth = calendar.get(Calendar.MONTH); 
    final int mDay = calendar.get(Calendar.DAY_OF_MONTH); 

    datePickerDialog = new DatePickerDialog(MainActivity.this, 
      new DatePickerDialog.OnDateSetListener() { 
       @Override 
       public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { 
        time = "" + i + "-" + i2 + "-" + (i1 + 1); 
        pickdate.setText(time); 
       } 
      }, mYear, mMonth, mDay); 

    datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 
    pickdate.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      datePickerDialog.show(); 
      return false; 
     } 
    }); 

    pickdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      datepicker(); 
     } 

    }); 
} 
나는 즉시 내가 할 수 SMS를 보낼 수있는 SMS를 보내려면이 위의 코드를 사용하고

하지만 내가 예약 된 시간에 SMS를 보내야합니다.

+3

내가 날짜 선택과 내가 통해 직접 SMS를 보낼 수 있어요 시간 선택기를 사용하고 어떤 노력 –

+0

보기 5 초 후 버튼을 붉은 색상을 설정하려면 알람 매니저

즉 샘플을 사용할 수 있습니다 응용 프로그램이지만 예정된 시간과 날짜에 보내지 못했습니다. –

+1

이 질문을 편집하여 코드를 게시 할 수 있습니까? 우리가 한 일을 보여주십시오. –

답변

0

이봐, 당신은

public void SetAlarm() 
    { 
     final Button button = buttons[2]; // replace with a button from your own UI 
     BroadcastReceiver receiver = new BroadcastReceiver() { 
      @Override public void onReceive(Context context, Intent _) 
      { 
       // you can send sms here 
       button.setBackgroundColor(Color.RED); 
       context.unregisterReceiver(this); // this == BroadcastReceiver, not Activity 
      } 
     }; 

     this.registerReceiver(receiver, new IntentFilter("com.blah.blah.somemessage")); 

     PendingIntent pintent = PendingIntent.getBroadcast(this, 0, new Intent("com.blah.blah.somemessage"), 0); 
     AlarmManager manager = (AlarmManager)(this.getSystemService(Context.ALARM_SERVICE)); 

     // set alarm to fire 5 sec (1000*5) from now (SystemClock.elapsedRealtime()) 
     manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000*5, pintent); 
    }