以编程方式发送短信,无需打开消息应用程序

问题描述 投票:0回答:6

到目前为止,我正在使用以下代码通过我的应用程序向另一部手机发送短信。

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

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

android android-activity
6个回答
138
投票

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

此外,您需要在
SEND_SMS

中授予

AndroidManifest.xml
权限才能发送消息

<uses-permission android:name="android.permission.SEND_SMS" />

    


22
投票
别忘了添加

<uses-permission android:name="android.permission.SEND_SMS"/>



14
投票

添加清单:

<uses-permission android:name="android.permission.SEND_SMS" />

添加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); } } }



8
投票

使用以下代码进行相同的操作:

SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(srcNumber, null, message, null, null);

这需要在 android 清单 xml 上声明以下权限。

<uses-permission android:name="android.permission.SEND_SMS"/>



3
投票


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.