android-以编程方式发送短信而不打开短信应用

到目前为止,我正在使用以下代码通过我的应用将SMS发送到另一部手机。

Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + srcNumber));

intent.putExtra( "sms_body", message );

startActivity(intent);

但是,这将打开本机消息传递应用程序,从而将我的应用程序的活动置于后台。 是否可以在不打开本机消息传递应用程序的情况下直接发送SMS? 如果是,怎么办?

5个解决方案

106 votes

您可以通过以下方式从应用程序发送消息:

public void sendSMS(String phoneNo, String msg) {

try {

SmsManager smsManager = SmsManager.getDefault();

smsManager.sendTextMessage(phoneNo, null, msg, null, null);

Toast.makeText(getApplicationContext(), "Message Sent",

Toast.LENGTH_LONG).show();

} catch (Exception ex) {

Toast.makeText(getApplicationContext(),ex.getMessage().toString(),

Toast.LENGTH_LONG).show();

ex.printStackTrace();

}

}

另外,您还需要在AndroidManifest.xml中授予的许可才能发送消息

Himanshu Agarwal answered 2019-12-25T10:17:12Z

14 votes

public void sendLongSMS() {

String phoneNumber = "0123456789";

String message = "Hello World! Now we are going to demonstrate " +

"how to send a message with more than 160 characters from your Android application.";

SmsManager smsManager = SmsManager.getDefault();

ArrayList parts = smsManager.divideMessage(message);

smsManager.sendMultipartTextMessage(phoneNumber, null, parts, null, null);

}

并且不要忘记添加

Abhishek Chaubey answered 2019-12-25T10:17:32Z

8 votes

发送带有许可请求的短信:

附加清单:

添加Java函数:

void sendSmsMsgFnc(String mblNumVar, String smsMsgVar)

{

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED)

{

try

{

SmsManager smsMgrVar = SmsManager.getDefault();

smsMgrVar.sendTextMessage(mblNumVar, null, smsMsgVar, null, null);

Toast.makeText(getApplicationContext(), "Message Sent",

Toast.LENGTH_LONG).show();

}

catch (Exception ErrVar)

{

Toast.makeText(getApplicationContext(),ErrVar.getMessage().toString(),

Toast.LENGTH_LONG).show();

ErrVar.printStackTrace();

}

}

else

{

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)

{

requestPermissions(new String[]{Manifest.permission.SEND_SMS}, 10);

}

}

}

Sujay U N answered 2019-12-25T10:18:01Z

5 votes

是的,找到我自己问题的答案:)

相同地使用以下代码:

SmsManager sms = SmsManager.getDefault();

sms.sendTextMessage(srcNumber, null, message, null, null);

这要求在Android清单xml上声明以下权限。

SoulRayder answered 2019-12-25T10:18:30Z

2 votes

SmsManager smsManager = SmsManager.getDefault();

smsManager.sendTextMessage(phoneNo, null, sms, null, null);

Dilavar M answered 2019-12-25T10:18:46Z

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐