2011-12-30 6 views
4

AndroidでSMS経由で印刷できない文字を送信する方法を知っていますか?SMSで印刷できない文字を送信する方法

私は次のコードを試しましたが、動作しません...受信者は正しい文字列を受信しません。

String msg = "Testing special char" +(char) 3; 
sendSMS(num,msg);//defined method 

または受信者がそれに応じていくつかのアクションを実行することができるように、SMSへのタグのいくつかの種類を挿入する他の方法はありますか?

+3

"緊急" はあなたに好意を獲得しませんが、可能性が高い反対! – Flexo

+0

緊急 - 何がうまくいかないのですか? –

+0

@awoodlandがそれを手に入れました。 –

答えて

2

デフォルトでは、ASCII形式のSMSメッセージを送信します。バイナリSMSを送信してみてください。

+0

こんにちは、GPRS/3Gなどが必要ですか?または、任意の電話でバイナリSMSを送信できますか? –

+1

いずれの電話機もバイナリSMSを送信できます。 – Kostadin

+0

thx!私はそれを試してみます –

0

質問にAndroidタグがあるので、トピック(コードcodetheory.in)の調査中に見つけたものがここにあります。

送る:

// Get the default instance of SmsManager 
SmsManager smsManager = SmsManager.getDefault(); 

String phoneNumber = "9999999999"; 
byte[] smsBody = "Let me know if you get this SMS".getBytes(); 
short port = 6734; 

// Send a text based SMS 
smsManager.sendDataMessage(phoneNumber, null, port, smsBody, null, null); 

が受信:

public class SmsReceiver extends BroadcastReceiver { 
    private String TAG = SmsReceiver.class.getSimpleName(); 

    public SmsReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Get the data (SMS data) bound to intent 
     Bundle bundle = intent.getExtras(); 

     SmsMessage[] msgs = null; 

     String str = ""; 

     if (bundle != null){ 
      // Retrieve the Binary SMS data 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      msgs = new SmsMessage[pdus.length]; 

      // For every SMS message received (although multipart is not supported with binary) 
      for (int i=0; i<msgs.length; i++) { 
       byte[] data = null; 

       msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 

       str += "Binary SMS from " + msgs[i].getOriginatingAddress() + " :"; 

       str += "\nBINARY MESSAGE: "; 

       // Return the User Data section minus the 
       // User Data Header (UDH) (if there is any UDH at all) 
       data = msgs[i].getUserData(); 

       // Generally you can do away with this for loop 
       // You'll just need the next for loop 
       for (int index=0; index < data.length; index++) { 
        str += Byte.toString(data[index]); 
       } 

       str += "\nTEXT MESSAGE (FROM BINARY): "; 

       for (int index=0; index < data.length; index++) { 
        str += Character.toString((char) data[index]); 
       } 

       str += "\n"; 
      } 

      // Dump the entire message 
      // Toast.makeText(context, str, Toast.LENGTH_LONG).show(); 
      Log.d(TAG, str); 
     } 
    } 
} 
関連する問題