마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MMS 메시지 전송 로직 질문.. (UsingNokiaAPI 사용하시는분..)

0 추천

안녕하세요,

http://m.blog.naver.com/burin/40188312425

이 곳에서 MMS정보를 얻었습니다.

 

그래서 간단히 보내는 것만 테스트해보려고 하는데, 발송이 가질 않아서요.

public void onClick(View view) { sendMMSUsingNokiaAPI(); } });

private void sendMMSUsingNokiaAPI()
{
   

    MMMessage mm = new MMMessage();
    SetMessage(mm);
    // AddContents(mm);

    MMEncoder encoder=new MMEncoder();
    encoder.setMessage(mm);

    try {
        encoder.encodeMessage();
        byte[] out = encoder.getMessage();
        MMSender sender = new MMSender();
        APNHelper apnHelper = new APNHelper(this);
        List<APN> results = apnHelper.getMMSApns();

        if(results.size() > 0){

            final String MMSCenterUrl = 			"http://mmsc.ktfwing.com:9082";
            final String MMSProxy = "";
            final int MMSPort = 9093;
            final Boolean  isProxySet =   (MMSProxy != null) && (MMSProxy.trim().length() != 0);

            sender.setMMSCURL(MMSCenterUrl);
            sender.addHeader("X-NOKIA-MMSC-Charging", "100");

            MMResponse mmResponse = sender.send(out, isProxySet, MMSProxy, MMSPort);
            Log.d(TAG, "Message sent to " + sender.getMMSCURL());
            Log.d(TAG, "Response code: " + mmResponse.getResponseCode() + " " + mmResponse.getResponseMessage());

            Enumeration keys = mmResponse.getHeadersList();
            while (keys.hasMoreElements()){
                String key = (String) keys.nextElement();
                String value = (String) mmResponse.getHeaderValue(key);
                Log.d(TAG, (key + ": " + value));
            }

            if(mmResponse.getResponseCode() == 200)
            {
                // 200 Successful, disconnect and reset.
                endMmsConnectivity();
                mSending = false;
                mListening = false;
            }
            else
            {
                
            }
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

sendUsingNokiaAPI()에서는

전 메시지만 보내는거 테스트할거라 AddContents는 제외 시켰구요.

제 핸드폰에서 제 폰으로 보낼것이므로 MMSCentrerUrl과 MMSProxy, MMSPort를 알려진 대로 입력해서 보냈습니다.

}

private void SetMessage(MMMessage mm) {
    mm.setVersion(IMMConstants.MMS_VERSION_10);
    mm.setMessageType(IMMConstants.MESSAGE_TYPE_M_SEND_REQ);
    mm.setTransactionId("0000000066");
    mm.setDate(new Date(System.currentTimeMillis()));
    mm.setFrom("제 핸드폰 번호/TYPE=PLMN"); 
    mm.addToAddress("제 핸드폰 번호/TYPE=PLMN");
    mm.setDeliveryReport(true);
    mm.setReadReply(false);
    mm.setSenderVisibility(IMMConstants.SENDER_VISIBILITY_SHOW);
    mm.setSubject("This is a nice message!!");
    mm.setMessageClass(IMMConstants.MESSAGE_CLASS_PERSONAL);
    mm.setPriority(IMMConstants.PRIORITY_LOW);
    mm.setContentType(IMMConstants.CT_APPLICATION_MULTIPART_MIXED);
}

 SetMessage(MMMesage mm)에서는 중간에 setFrom이랑 addToAddress 부분에 앞에만 제 번호로만 넣어놨어요.

다른거 세팅해야할것이 있는지 궁금합니다.. (__)

겸군님 (1,900 포인트) 님이 2016년 10월 12일 질문

1개의 답변

0 추천
 
채택된 답변
apnhelper.java 인가 거기서 통신사별로 apn 정의해줘야합니다.
sadeva (21,550 포인트) 님이 2016년 10월 12일 답변
겸군님님이 2016년 10월 13일 채택됨
답변 감사합니다 :D

네, 그래서 세팅해야한다고 하길래..
그냥 sendMMSUsingNokiaApi()함수안에서  위에 제가 올린것처럼

            final String MMSCenterUrl =             "http://mmsc.ktfwing.com:9082";
            final String MMSProxy = "";
            final int MMSPort = 9093;

로 선언해서 results 사용하지않고 직접 넣어서 테스트해보려고 했거든요~
이 방법으로는 안되는건가요?? 제가 제 자신에게 보낼거라 KT LTE로 세팅해놨거든요..
제가 전에 kt작업할때 다른 통신사랑 다른점이있긴했는데

AddContents 에서 kt는 setType(IMMConstants.CT_TEXT_HTML); 이방식을 사용해야 mms가 정상적으로 발송됬습니다 나머지통신사는
setType(IMMConstants.CT_TEXT_PLAIN+"; charset=\"euc-kr\";" );
이렇게했구여

본문에서  addcontents 제외시켯다고하셨눈대 타입 한번 맞춰보셔야할수도있겠네영
감사합니다 !! 이미지 파일이나 이런건 안쓰려고 addcontents는 일부러 주석처리했는데, 해봐야겠네요

참고하겠습니다 :D
...