2017-01-07 7 views
2

내 응용 프로그램에서 SMS를 보내고 싶습니다. 코드는 아래 코드로 작성했습니다.이 코드는 매우 간단합니다. 매니페스트SMS 보내기 startActivity

<uses-permission android:name="android.permission.SEND_SMS" /> 
에 추가

private void sendSMS(Context context, String phone, String msg){ 
    Intent smsIntent = new Intent(Intent.ACTION_VIEW); 

    smsIntent.setData(Uri.parse("smsto:")); 
    smsIntent.putExtra("address", phone); 
    smsIntent.putExtra("sms_body", msg); 
    smsIntent.setType("vnd.android-dir/mms-sms"); 

    try { 
     startActivity(smsIntent); 
     finish(); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(context, "SMS faild, please try again later.", Toast.LENGTH_SHORT).show(); 
    } 
} 

권한 :하지만이 직면하고있는 문제는 없음 활동은 메시지를 보내

방법 메시지를 보내기 시작되지이다

항상 캐치()로 작성된 축배를 보여줍니다.

+0

당신이 마시 멜로 이상에서 테스트됩니다

<uses-permission android:name="android.permission.SEND_SMS" />

그냥이 코드를 사용는? – Mrinmoy

답변

0

토스트는 항상 catch()에 들어가는 것을 의미합니다. 도움이된다면 캐치 처리하는 ActivityNotFoundException

것은,이 링크를 따라

https://stackoverflow.com/a/10613004/5722385

당신은 마시멜로와 협력 위, 친절하게 아래의 링크를 통해 이동하는 경우, 그것은 필요하다 런타임 권한을 추가하는 방법의 예입니다.

https://stackoverflow.com/a/34969604/5722385

보내기 sms는 위험한 권한으로 그룹화되어 런타임에서도 처리해야하므로 menifest 파일에 쓰기 권한만으로는 충분하지 않습니다.

전화 권한을 활성화하려면 런타임 권한을 추가하기 전에이 단계를 따르십시오.

설정 -> 앱 -> 앱 선택 -> 사용 권한 -> SMS 사용 권한을 사용 설정합니다. 또한 위험한 권한의 목록을 보려면이 링크를 확인하실 수 있습니다

, 즉 당신이 실행하는 코드는 오래 런타임

https://developer.android.com/guide/topics/permissions/requesting.html

+0

감사의 말 –

1

에서 처리되어야한다. 이 앱

public void sendSMSFunction(){ 
    SmsManager smsManager = SmsManager.getDefault(); 
    String messageContent = "Your Content"; 
    smsManager.sendTextMessage("Destination_PhoneNumber", null, messageContent, null, null); 
} 

에서 SMS를 보내 매니페스트 파일에이 권한을 추가하는 코드입니다

<uses-permission android:name="android.permission.SEND_SMS"/> 

그리고 당신은 안드로이드 산들 바람에 당신이 요청해야합니다 이상이 실행되는 경우 런타임 권한.

+0

나는 누군가의 뒤에 SMS를 보내고 싶지 않다. 전화 번호가 이미 채워져있는 기본 텍스트 메신저로 전화하기 만하면됩니다. 하지만 두 번째 응답은 좋았습니다 –

+0

죄송합니다. 하지만 숫자, 메시지 및 보내기 및 취소 버튼 두 개를 입력 할 수있는 필드가 포함 된 활동을 만들 수 있습니다. 그리고 버튼 클릭으로 SMS를 보낼 수 있습니다. 이 방법은 사용자가 귀하의 앱에 계속 머무를 것이고 다른 사용자의 뒤에 SMS가 전송되지 않게 될 것입니다. –

+0

실제로 그렇게 할 수도 있습니다. 생성하는 것이 상대적으로 간단한 활동이고 더 깨끗하게 보일 것이기 때문입니다. 나는 단지 허가의 필요성을 막으려 고했다. –

2

는 시도이 하나

도에 대한 필요가 없습니다 :

Intent sendIntent = new Intent(Intent.ACTION_VIEW); 
       sendIntent.setData(Uri.parse("sms:")); 
       sendIntent.putExtra("sms_body", "Check out My app for your smartphone. Download it today from https://google.com"); 
       try { 
        startActivity(sendIntent); 
       } catch (ActivityNotFoundException e) { 
        e.printStackTrace();       
       } 
+0

감사합니다. 귀하의 코드 라인 sendIntent.setData (Uri.parse ("sms :")); 나를 도왔습니다. 나는 "smsto :"하고 있었고, 나는 그 다음에 시스템을 망가 뜨리고 있었다. –