1

私はAndroid用のSMSAPIを使用するアプリケーションに取り組んでいます。受信側は7ビットでエンコードされたSMSのみをサポートする組み込みユニットであり、送信する文字列はこの特定のアルファベットの記号のみで構成されているため、Androidは7ビットでエンコードされて送信するように思われます。しかし、そうではありません。

したがって、使用するエンコーディングを指定する方法を探しています。私のコードが今日どのように見えるかについては、以下を参照してください。gsm7BitPackedToStringメソッドは、バイト配列を7ビット文字列に変換します。つまり、文字列は7ビット互換の文字のみで構成され、内部のAndroidAPIからコピーされます。

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;
}

私は次の解決策を検討しました:

  • ある種の内部メソッドを使用していますが、私が読んだものはもう存在しないようです。
  • データメッセージを送信しますが、これには、受信側もサポートしていない追加のユーザーデータヘッダーが必要です。

どんな助けでも大歓迎です:-)

4

2 に答える 2

2

まあ、解決策は思ったほど難しくはありませんでした。私がandroidプロジェクトから借りたGsmAlphabetクラスには、いくつかのエンコーディングバグがありました。gitリポジトリの最新のものに置き換えましたが、すべてが想定どおりに機能しているようです。

学んだ教訓:機能するはずのものを常に2回および3回チェックします。

于 2010-08-25T07:27:38.803 に答える
1

SmsMessageクラスを使用してみてください:

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

SmsMessageメソッドを使用してオブジェクトを作成createFromPdu()し、送信に使用しSmsManagerます。

私はそれを試しませんでした。幸運を。

于 2010-08-24T10:40:02.567 に答える