gpt4 book ai didi

android - 我可以自动发送短信吗(无需用户批准)

转载 作者:IT老高 更新时间:2023-10-28 21:43:05 24 4
gpt4 key购买 nike

我对 Android 比较陌生。我试图从 Android 应用程序发送短信。使用 SMS Intent 时,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 是 Pending Intent 他们可以在方法完成发送短信时触发广播

这是广播接收器的示例代码

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

您可以在 Activity 中使用以下行进行注册

registerReceiver(receiver, new IntentFilter(SMS_SENT));  // SMS_SENT is a constant

别忘了在 onDestroy 中注销广播

@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}

关于android - 我可以自动发送短信吗(无需用户批准),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com