web-dev-qa-db-ja.com

SMS 160文字以上を送信するには?

Androidで大きなSMSを送信する方法。

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(contactNos[j], null,msgs[i], sentPI, deliveredPI);

このコードは、160文字のメッセージに対してのみ機能します。私も使う

ArrayList<String> msgsplit=sms.divideMessage(msgs[i]);
ArrayList<PendingIntent> listOfIntents = new ArrayList<PendingIntent>(); 

for (int k=0; k < msgsplit.size(); k++){  
    Intent sentIntent = new Intent(); 
    PendingIntent pi = PendingIntent.getBroadcast(MultipleMsg.this, 0, sentIntent, PendingIntent.FLAG_CANCEL_CURRENT);  
    listOfIntents.add(pi);  
}
// sendMessage(contactNos[j],msgs[i]);
sms.sendMultipartTextMessage(contactNos[j],null,msgsplit, listOfIntents, null);

しかし、それはメッセージでジャンク文字を送信します。誰も私を助けることができますか?

38
Girish Bhutiya

ジャンクキャラクター?メソッドsendMultipartTextMessageは、textメッセージのみを送信します。非テキストメッセージを送信する場合は、sendDataMessageメソッドを確認する必要があります。以下はAndroid cts 。からのコード抜粋です。長いメッセージを送信する方法の例があります。

SmsManager sm = SmsManager.getDefault();
ArrayList<String> parts =sm.divideMessage(LONG_TEXT);
int numParts = parts.size();

ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();

for (int i = 0; i < numParts; i++) {
sentIntents.add(PendingIntent.getBroadcast(getContext(), 0, mSendIntent, 0));
deliveryIntents.add(PendingIntent.getBroadcast(getContext(), 0, mDeliveryIntent, 0));
}

sm.sendMultiPartTextMessage(mDestAddr,null, parts, sentIntents, deliveryIntents)
34
Jasonw

以下のコードを試してみてください

SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
46
ingsaurabh

エミュレータは特定の問題の発生時にそのコードのジャンク文字を送信するので、実際のモバイルでapkを使用し、コードを確認します。アプリケーションがジャンクメッセージを送信しないことを確信しています。

3
tizbn

160以上の文字を含むSMS)を送信するには、SMSCから特定のショートコードを取得する必要があります。

0
krishna Ram