2012-10-15 4 views
1

SMS를 보내고 싶지만 SmsManager 클래스를 사용하지 않습니다. Android 휴대 전화에있는 기본 SMS 앱으로이 작업을 수행하려고합니다.기본 sms 앱을 사용하여 자체 실행하지 않고 SMS 보내기

다음과 같은 비틀기가 있습니다. 수행하는 동안 기본 앱을 실행하고 싶지 않습니다. '보내기'를 클릭하지 않고도) 네이티브 앱을 통해 직접 SMS를 보낼 수있는 의도가 있습니까? (SMS 본체와 전화 번호를 사용하여 보내십시오).

나는 봤지만 모든 결과와 응답은 단순히 사용자가 수동으로 SMS를 보내길 기다리는 동안 기본 SMS를 시작했습니다. 나는 이것이 'MightyText'와 같은 일부 응용 프로그램에서 구현되는 것을 보았고 내 응용 프로그램에서도 구현하려고합니다.

도와주세요!

답변

13

SmsManager를 사용하면 SMS를 시스템을 통해 보내지 만 이전에 언급 한 것처럼 SMS 콘텐츠 공급자에 넣지는 않습니다. 따라서 모든 기본 메시지 앱은 메시지를 볼 수 없습니다.

이렇게하려면 SmsManager를 통해 정상적으로 메시지를 보낸 후에 SMS 콘텐츠 공급자를 통해 수동으로 추가해야합니다. 다음은 몇 가지 샘플 코드입니다.

ContentValues values = new ContentValues(); 
values.put("address", "+12345678"); // phone number to send 
values.put("date", System.currentTimeMillis()+""); 
values.put("read", "1"); // if you want to mark is as unread set to 0 
values.put("type", "2"); // 2 means sent message 
values.put("body", "This is my message!"); 

Uri uri = Uri.parse("content://sms/"); 
Uri rowUri = context.getContentResolver().insert(uri,values); 

그게 전부입니다.그 다음에는 추가 된 메시지와 기본 메시지 응용 프로그램이 정상적으로 표시된다는 것을 알게됩니다.

"동의"대답을 클릭하면 문제가 해결됩니다.

+6

wnafee의 답변에 추가하고 싶다면이 코드에서도 android.permissions.READ_SMS/android.permissions.WRITE_SMS가 매니페스트에 추가되어야하며 코드는 매력처럼 작동해야합니다! 감사합니다 wnafee. –

+0

네이티브 SMS 응용 프로그램을 숨길 수 있었습니까? –

0

ACTION_SENDTO 만 있다면, 물론 보낼 수있는 모든 응용 프로그램이 나타납니다.

당신은 URL과

+0

감사를 여기에 최초의 건설적인 대답을 게시. 이미 URL 필터를 사용하고있었습니다. 나는 또한 콘텐츠 유형으로 필터링을 시도했지만 여전히 선택기를 팝업합니다. 것은, 네이티브 SMS를 응용 프로그램을 직접 사용하기 위해 내 모바일에 선택기를 건너 뛰는 응용 프로그램을 보았 기 때문에, 그렇게 할 수 있다는 긍정적입니다. –

0

와. 당신은 프로그래밍 방식으로 SMS를 보내려면이 사용할 수

 SmsManager smsManager = SmsManager.getDefault(); 

     smsManager.sendTextMessage(phoneNumber, null, message, null, null); 

- 당신은 그것을 이런 식으로 뭔가 될 것 SmsManager

를 사용해야합니다.

+0

기본 앱에 내 SMS를 기록합니까? –

+0

아니요, 보낸 메시지가 기본 앱에 표시되지 않습니다. 그것에 대한 방법이있을 수 있지만 그것에 대해 잘 모르겠습니다. –

+0

그래서 smsManager를 사용하고 싶지 않은 이유는 보낸 메시지에 대해 내 자신의 UI를 작성하는 것이 좋지만 내 응용 프로그램의 범위를 벗어났습니다. 그러므로 내 질문의 첫 번째 줄. –

5

좋아, SmsManager를 사용하지 않고 SMS를 보내려면 기본 SMS 앱 목록에 표시해야합니다.

우선, SmsManager을 우회하는 SMS를 보낼 수 없습니다. Samsung Galaxy Nexus의 모든 기본 메시지 앱의 소스 코드를 보면 버튼 클릭시 SmsManager가 호출됩니다.

그래서, 위의 게시 된 코드의 아래 부분은 메시지를 전송 한 후, 네이티브 애플리케이션은

How to save SMS to inbox in android?

에 따라 SMS 컨텐트 프로로에 넣어,

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage(phoneNumber, null, message, null, null); 

둘째 정확

주의 사항은 지금 추가하는 것이 지원되지 않는다는 것입니다. 따라서 보낸 편지함에 추가하기 위해 해킹해야 할 수도 있습니다.

+0

고마워 Royston. 알았다. –

0

이 시도 :

String phoneNo = textPhoneNo.getText().toString(); 
String sms = textSMS.getText().toString(); 



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(); 
}