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エンコーディングであるかどうかを確認する必要があります。