2017-09-25 2 views
-2

SMS 메시지를 보내는 Android 애플리케이션을 만들고 있습니다. 하나의 문제를 제외하고는 모든 것이 작동합니다. 앱이 열려 있지 않으면 메시지를 보내지 않습니다.Android : 백그라운드에서 SMS를 보내려면 어떻게해야합니까? (API 최소값은 21입니다.)

전송에 대한 나의 코드는 기본입니다 :

SmsManager smsManager = SmsManager.getDefault(); 
    smsManager.sendTextMessage(phoneNumber, null, messageToSend, null, null); 

나는 메시지가 특정 시간에 전송하고 싶다. timeToSend라는 문자열에 시간이 저장되어 있고 앱이 포 그라운드에 있으면 완벽하게 전송됩니다. 백그라운드에서 메시지를 보내려면 어떻게해야합니까? 나는 alarmmanagers에 읽었지만 그것이 내가 필요한지 확실하지 않습니다.

감사합니다.

+1

"특정 시간에 메시지를 보내고 싶습니다."- 그러면 문제가 "특정 시간"논리의 코드에 있습니다. – CommonsWare

+0

나는 그것을 사용할 때마다 특정 시간을 분으로 정한다. – Kobeissi2

+0

제 질문은 귀하의 질문에 "특정 시간"논리 코드가 표시되지 않는다는 것입니다. 결과적으로 아무도 당신을 도울 수 없습니다. – CommonsWare

답변

0

@CommonsWare처럼 사용자는 특정 시간 논리를 처리해야한다고 말했습니다. SMS를 보내는 코드가 실제로 "발생"하는 서비스를 호출하는 AlarmManager을 사용하지 않는 것이 좋습니다. AlarmManager를 사용하는 경우 Android Manager와 관련된 여러 가지 방법으로 다른 버전의 Android를 처리 할 수 ​​있으며 (필요한 경우) AlarmManager를 재설정하는 코드를 포함 할 수 있습니다. 또한 Marshmallow의 "배경"에서 서비스를 관리하는 방법에 대한 변경 사항을 알고 있어야합니다.

** 편집 : ** 기기를 재부팅 할 때 AlarmManager를 재설정해야합니다. 게다가.

+0

Worked great! 약간 지연되었지만 API 수준에서 예상됩니다. – Kobeissi2

0

나는

를 구현하는 방법에 대한 세부 사항은 in this developer's page

AsyncTask를이 UI 스레드의 적절하고 쉽게 사용할 수 있습니다 당신은 백그라운드에서 실행 AsyncTask을 사용할 수 있습니다 생각합니다. 이 클래스 을 사용하면 스레드 및/또는 처리기를 조작하지 않고도 백그라운드 작업을 수행하고 UI 스레드에서 결과를 게시 할 수 있습니다.

+0

방금 ​​시도했지만 아직 열 때만 보냅니다. :( – Kobeissi2

관련 문제