22

我正在使用 SMS Manager 在 android 中发送短信。我使用的代码如下:

private void sendSms(String Phnno, String Message) {
    if (Utils.checkSIM(MyActivity.this)) {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(Phnno, null, Message, null, null);
        Utils.showMessage(MyActivity.this,"","Thank You for your interest,please check your inbox for the results.");

    } else {
        showErrorMessage(MyActivity.this, "SIM Error!",
                "Please insert SIM");
    }

}

这段代码在单卡手机上非常适合我,但是当我在双卡手机中检查时,我收到了以下警告,并且从不发送短信。

01-11 15:56:13.664: W/sendTextMessage(6656): use single sim interface to sendTextMessage by double sim interface

请建议我如何在我的双卡手机上实现它。在此先感谢。

4

3 回答 3

8

这将适用于这两种情况。如果用户已经选择了默认的 sim 卡,它将自动接受并转到下一个过程,否则在单击发送按钮时,它会要求确认选择任何 sim 卡发送短信。我们已经测试了它的工作正常。

示例源代码:

try 
{    
     Intent sendIntent = new Intent(Intent.ACTION_VIEW);
     sendIntent.putExtra("sms_body","Body");
     sendIntent.putExtra("address", "PhoneNumber");
     sendIntent.setType("vnd.android-dir/mms-sms");
     startActivity(sendIntent);
} 
catch (Exception e) 
{
     Toast.makeText(getApplicationContext(),"SMS faild, please try again later!",Toast.LENGTH_SHORT).show();
     e.printStackTrace();
}
于 2013-08-08T10:45:38.007 回答
4

sendTextMessage()scAddress参数。这用于定义 SMS 中心地址。我认为如果您设置正确,您将能够发送消息。

您可以按照本教程找到号码:http: //algorithmic-indian.blogspot.hu/2011/03/how-to-change-message-center-number-in.html 您也可以试试这个如何获取android中手机的smsc号码?显然似乎没有办法以编程方式获取号码。

于 2013-08-15T09:15:52.720 回答
0

试试这个代码选择sim,然后使用短信发送方法发送短信!

//above Android API 22
if (Build.VERSION.SDK_INT > 22) {
//for dual sim mobile
SubscriptionManager localSubscriptionManager = SubscriptionManager.from(this);

if (localSubscriptionManager.getActiveSubscriptionInfoCount() > 1) {
 //if there are two sims in dual sim mobile
    List localList = localSubscriptionManager.getActiveSubscriptionInfoList();
    SubscriptionInfo simInfo = (SubscriptionInfo) localList.get(0);
    SubscriptionInfo simInfo1 = (SubscriptionInfo) localList.get(1);

    final String sim1 = simInfo.getDisplayName().toString();
    final String sim2 = simInfo1.getDisplayName().toString();

}else{
 //if there is 1 sim in dual sim mobile
    TelephonyManager tManager = (TelephonyManager) getBaseContext()
            .getSystemService(Context.TELEPHONY_SERVICE);

    String sim1 = tManager.getNetworkOperatorName();

}

}else{
//below android API 22
        TelephonyManager tManager = (TelephonyManager) getBaseContext()
                .getSystemService(Context.TELEPHONY_SERVICE);

        String sim1 = tManager.getNetworkOperatorName();
}
于 2020-12-09T23:08:37.907 回答