基本的に、SmsManager を使用してクライアント間で SMS メッセージを送信するチャット アプリケーションがありますが、それよりも長いメッセージを送信できるようにしています。約 40 ~ 60 文字しか送信できないと読みましたが、200 ~ 400 通のメモのようなメッセージを送信したいので、それを行う方法はありますか?
質問する
2946 次
1 に答える
7
I have created one demo for you.. i think it might help you..
it will devide your message in parts and send it one by one...
public class Home extends Activity
{
Context ctx;
private static final String SMS_SEND_ACTION = "CTS_SMS_SEND_ACTION";
private static final String SMS_DELIVERY_ACTION = "CTS_SMS_DELIVERY_ACTION";
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
String ph_no;
String str;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
ctx = this;
ph_no = "set destination mob. no here..";
str = "Your message here....";
SmsManager sm = SmsManager.getDefault();
IntentFilter sendIntentFilter = new IntentFilter(SMS_SEND_ACTION);
IntentFilter receiveIntentFilter = new IntentFilter(SMS_DELIVERY_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(ctx, 0,new Intent(SMS_SEND_ACTION), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(ctx, 0,new Intent(SMS_DELIVERY_ACTION), 0);
BroadcastReceiver messageSentReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(context, "SMS sent", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(context, "Generic failure", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(context, "No service", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(context, "Null PDU", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(context, "Radio off", Toast.LENGTH_SHORT).show();
break;
}
}
};
registerReceiver(messageSentReceiver, sendIntentFilter);
BroadcastReceiver messageReceiveReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context arg0, Intent arg1)
{
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS Delivered",Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS Not Delivered", Toast.LENGTH_SHORT).show();
break;
}
}
};
registerReceiver(messageReceiveReceiver, receiveIntentFilter);
ArrayList<String> parts =sm.divideMessage(str);
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
for (int i = 0; i < parts.size(); i++)
{
sentIntents.add(PendingIntent.getBroadcast(ctx, 0, new Intent(SMS_SEND_ACTION), 0));
deliveryIntents.add(PendingIntent.getBroadcast(ctx, 0, new Intent(SMS_DELIVERY_ACTION), 0));
}
sm.sendMultipartTextMessage(ph_no,null, parts, sentIntents, deliveryIntents);
}
}
this code will also give you a send and delivery notification. ( this send and delivery notification is additional code, but somewhere it is use full for you )
于 2013-04-04T11:14:13.250 に答える