私はAndroidが初めてです。 SMSアプリケーションからAndroidを送信しようとしています。 SMSインテントを使用する場合、SMSウィンドウが開き、ユーザーはSMSを承認して送信する必要があります。
ユーザーが確認せずにSMSを自動的に送信する方法はありますか?
ありがとう、Lior
このメソッドを使用して、SMSを送信できます。 smsが160文字を超える場合、sendMultipartTextMessageが使用されます。
private void sendSms(String phonenumber,String message, boolean isBinary)
{
SmsManager manager = SmsManager.getDefault();
PendingIntent piSend = PendingIntent.getBroadcast(this, 0, new Intent(SMS_SENT), 0);
PendingIntent piDelivered = PendingIntent.getBroadcast(this, 0, new Intent(SMS_DELIVERED), 0);
if(isBinary)
{
byte[] data = new byte[message.length()];
for(int index=0; index<message.length() && index < MAX_SMS_MESSAGE_LENGTH; ++index)
{
data[index] = (byte)message.charAt(index);
}
manager.sendDataMessage(phonenumber, null, (short) SMS_PORT, data,piSend, piDelivered);
}
else
{
int length = message.length();
if(length > MAX_SMS_MESSAGE_LENGTH)
{
ArrayList<String> messagelist = manager.divideMessage(message);
manager.sendMultipartTextMessage(phonenumber, null, messagelist, null, null);
}
else
{
manager.sendTextMessage(phonenumber, null, message, piSend, piDelivered);
}
}
}
piSendおよびpiDeliveredは保留中のインテントであり、メソッドがSMSの送信を終了したときにブロードキャストをトリガーできます。
放送受信機のサンプルコードはこちら
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = null;
switch (getResultCode()) {
case Activity.RESULT_OK:
message = "Message sent!";
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
message = "Error. Message not sent.";
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
message = "Error: No service.";
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
message = "Error: Null PDU.";
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
message = "Error: Radio off.";
break;
}
AppMsg.makeText(SendMessagesWindow.this, message,
AppMsg.STYLE_CONFIRM).setLayoutGravity(Gravity.BOTTOM)
.show();
}
};
アクティビティの以下の行を使用して登録できます
registerReceiver(receiver, new IntentFilter(SMS_SENT)); // SMS_SENT is a constant
また、onDestroyでブロードキャストを登録解除することを忘れないでください
@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}
アプリケーションがAndroidManifest.xmlに次のアクセス許可を持っている場合
<uses-permission Android:name="Android.permission.SEND_SMS"/>
必要なだけSMSを送信できます
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage(...);
そしてそれがすべてです。
はい、送信できますSMSを使用して、 SmsManager
。アプリケーションで SEND_SMS
これが機能するための許可。
はい、ユーザーの操作なしでSMSを送信できます...しかし、ユーザーがSMSを1つの番号にのみ送信したい場合は動作します。
try {
SmsManager.getDefault().sendTextMessage(RecipientNumber, null,
"Hello SMS!", null, null);
} catch (Exception e) {
AlertDialog.Builder alertDialogBuilder = new
AlertDialog.Builder(this);
AlertDialog dialog = alertDialogBuilder.create();
dialog.setMessage(e.getMessage());
dialog.show();
}
また、マニフェストのアクセス許可を追加します。
<uses-permission Android:name="Android.permission.SEND_SMS"/>