2013-01-11 11 views
17

Pracuję z Menedżera SMS do wysyłania sms w android.The kod używam jest jak poniżej:Menedżer SMS dla dwóch telefonów z Simem?

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

} 

Ten kod działa dla mnie idealnie na telefonach pojedynczych sim, ale kiedy to sprawdzić w Dual SIM telefonów i otrzymuję następujące ostrzeżenie i SMS nigdy nie wysyła.

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

Proszę zasugerować, w jaki sposób mogę to osiągnąć na moim dual sim phone.Thanks in Advance.

+0

Skąd udało Ci się zdobyć Scaddress? –

+0

zobacz ten link jego praca dla mnie na huawei g730 [http://stackoverflow.com/a/30677542/5102893](http://stackoverflow.com/a/30677542/5102893) –

Odpowiedz

3

sendTextMessage() ma parametr scAddress. Służy do zdefiniowania adresu centrum SMS. Myślę, że jeśli ustawisz go poprawnie, będziesz mógł wysłać wiadomość.

można znaleźć numer, wykonując tym tutorialu: http://algorithmic-indian.blogspot.hu/2011/03/how-to-change-message-center-number-in.html Można spróbować także how to get the smsc number of a phone in android? Widocznie tam nie wydaje się być sposób programowo uzyskać numer.

+0

Jeśli użytkownik ma dwa telefony od tego samego operatora, plik smdri będzie taki sam, prawda? –

+0

Chyba tak. Nie mam urządzenia, które mógłbym przetestować. – allprog

+0

Niektórzy (większość?) Przewoźnicy mają dwa (lub więcej?) Numery SMSC. Przypuszczam, że możesz spróbować ustawić inny numer SMSC dla każdej karty SIM. Nadal muszę próbować, ale obecnie nie mam do testowania telefonu Dual Sim. – Matthew

7

To będzie działać w obu scenariuszach. Jeśli już wybrano użytkownika, domyślna karta SIM automatycznie przeniesie go i przejdzie do następnego procesu, w przeciwnym razie kliknij przycisk wysyłania, aby poprosić o potwierdzenie wyboru dowolnej karty SIM do wysłania smsa. przetestowaliśmy jego działa dobrze.

Przykładowy kod źródłowy:

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

To może działać poprawnie. Ale czy to pierwsze przekierowanie do SMS-a nie stworzy ekranu? Co jeśli chce wysłać wiadomość bezpośrednio? – SKT

+3

Ten kod uruchomi aplikację do wysyłania SMS-ów. Nie nadaje się do wysyłania SMS-ów w tle. – allprog

+7

Odpowiedź nie dotyczy bezpośrednio kodu, o którym mowa. To tylko obejście. – Saran

Powiązane problemy