2

BroadcastreceiverクラスのSmSMessageクラスを使用して、デバイスで着信SMSのエンコーディングを取得する方法を知る必要があります。

明らかに、私はコードを使用できません:

Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];

for (int i = 0; i < msgs.length; i++) {
    msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
    msg_str += msgs[i].getMessageBody();
}
StringBufferInputStream buf = new StringBufferInputStream(msgs[0].getMessageBody());
InputStreamReader reader = new InputStreamReader(buf);
String encode = reader.getEncoding();

これにより、Javaのデフォルトのエンコーディングである(UTF-8)が返されるためです。

SMSがGSM7、8ビット、またはUTF-16エンコーディングであるかどうかを確認する必要があります。

4

3 に答える 3

1

私の推測では、通常、SMS:s はGSM 03.38でエンコードされています。これはおそらく、Android ドキュメントで言及されている「無線固有のエンコーディング」です。

于 2012-10-19T11:19:01.280 に答える