到目前为止,我正在使用以下代码通过我的应用程序向另一部手机发送短信。
Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + srcNumber));
intent.putExtra( "sms_body", message );
startActivity(intent);
但是,这会打开本机消息应用程序,从而将我的应用程序的活动置于后台。是否可以在不打开本机消息应用程序的情况下直接发送短信?如果是的话,怎么办?
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" />
别忘了添加
<uses-permission android:name="android.permission.SEND_SMS"/>
添加清单:
<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);
}
}
}
使用以下代码进行相同的操作:
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(srcNumber, null, message, null, null);
这需要在 android 清单 xml 上声明以下权限。
<uses-permission android:name="android.permission.SEND_SMS"/>