2010-08-24 5 views
1

나는 안드로이드 용 SMS API를 사용하는 애플리케이션으로 작업 중이다. 수신 측은 7 비트 인코딩 SMS 만 지원하는 내장 된 유닛이며 전송중인 문자열은이 특정 알파벳의 기호로만 구성되어 있으므로 안드로이드가 7 비트로 인코딩하여 전송한다고 생각하게합니다. 하지만 그렇지 않습니다.안드로이드에서 SMS 메시지의 데이터 인코딩 정의하기

따라서 사용할 인코딩을 지정하는 방법을 찾고 있습니다. 내 코드가 오늘 어떻게 생겼는지 보려면 아래를 참조하십시오. gsm7BitPackedToString 메소드는 바이트 배열을 7 비트 문자열로 변환합니다. 즉, 문자열은 7 비트 호환 문자로만 구성되며 내부 Android API에서 복사됩니다. 내부 방법의 일종을 사용

  • 하지만 사람 I've read about 아무도 더 이상 존재 것 같다 :

    private static boolean sendMessage(String tel,byte[] message,int septets) { 
        SmsManager sms = SmsManager.getDefault(); 
        if (septets != -1) { 
         String a = GsmAlphabet.gsm7BitPackedToString(message,0,septets); 
         sms.sendTextMessage(tel, null, a, null, null); 
         return true; 
        } 
        return false; 
    } 
    

    가 나는 다음과 같은 솔루션을 고려했다.

  • 데이터 메시지를 보내지 만받는 쪽에서도 지원하지 않는 추가 사용자 데이터 헤더가 필요합니다.

    http://developer.android.com/reference/android/telephony/SmsMessage.html

    createFromPdu() 방법 SmsMessage 객체를 생성하고 SmsManager에 보내는 데 사용 :

어떤 도움 SmsMessage 클래스를 사용해보십시오

+0

안녕하세요, GsmAlphabet을 어디에서 찾았습니까? USSD를 통해 SMS를 보내고 싶습니다. ussd 코드에서 보내는 문자열의 인코딩에 문제가 있습니다. 원한다면 ussd 메시지를 보내는 코드를 공유 할 수 있습니다. 고맙습니다. –

+0

GsmAlphabet은 [android open source project] (http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=telephony/java/com/android)에서 가져온 것입니다. /internal/telephony/GsmAlphabet.java;h=57d73e3758f5de2d52abc8deca66fd797f3a19e2;hb=HEAD) –

답변

2

글쎄, 솔루션은 생각만큼 힘들지 않았습니다. 안드로이드 프로젝트에서 빌린 GsmAlphabet 클래스에는 인코딩 버그가있었습니다. git 저장소의 최신 버전으로 바꿨는데 이제는 모든 것이 제대로 작동하는 것처럼 보입니다.

수업을 통해 얻은 교훈 : 항상 작동해야하는 사항을 두 번 및 세 번 확인하십시오.

1

:-) 감사합니다.

나는 그것을 시도하지 않았다. 행운을 빕니다.

+1

나는 그 해결책을 너무 보았다. 내가 발견 한 문제는 실제로 SMS로 SmsMessage 클래스의 인스턴스를 보낼 수있는 방법이없는 것 같습니다. 어쩌면 내가 뭔가를 바라 보는 것일까 ...? –

관련 문제