2016-11-19 20 views
1

Ich versuche, die Nachricht an mehrere Nummern zu senden. Aber die Nachricht wird nicht gesendet. Ich habe den Code hinzugefügt, um die Nachrichten in einem Dienst zu senden, um sicherzustellen, dass der Code ausgeführt wird, selbst wenn die App im Hintergrund ist.SMS wird nicht gesendet

Auch ich habe die Erlaubnis im Manifest hinzugefügt und auch um Runtime-Erlaubnis gefragt.

Message Service:

public class MessageService extends Service { 

    ArrayList<String> numbers = new ArrayList<>(); 
    private SharedPreferences sharedpreferences; 
    private String mUserName; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     sharedpreferences = getSharedPreferences("UserProfile", Context.MODE_PRIVATE); 

     mUserName = sharedpreferences.getString("UserUsername", ""); 

     numbers = intent.getStringArrayListExtra("numbers"); 

     for (String number:numbers) { 

       sendMsg(number); 

      // sendSMS("8655864341","Hello"); 
     } 

     return super.onStartCommand(intent, flags, startId); 
    } 

    public void sendMsg(final String num){ 
     String SENT = "SMS_SENT"; 
     final SmsManager sms = SmsManager.getDefault(); 
     final PendingIntent sentPI = PendingIntent.getBroadcast(MessageService.this, 0,new Intent(SENT), 0); 
     Handler h = new Handler(); 
     h.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       // sms.sendTextMessage(num, null, "Hi,I am " + mUserName + "add me to your unique contact list and you never need to update" + 
         // " any changes anymore! Click download below to download the App." + "https://play.google.com/apps/testing/com.weberz", sentPI, null); 

       sms.sendTextMessage(num, null, "Hi,add me to your unique contact list and you never need to update" + 
         " any changes anymore! Click download below to download the App.", sentPI, null); 
      } 
     }, 3000); 


    } 

} 

Diese Sache vor arbeitet, Nachrichten wurden auf den Zahlen erhalten. Jetzt habe ich versucht, den Link und den Benutzernamen in der Nachricht hinzuzufügen und sie wurden nicht gesendet.

Dann noch einmal habe ich versucht, Link und Benutzername aus den Nachrichten zu entfernen und überprüft, ob die Nachrichten gesendet wurden und es jetzt nicht funktioniert.

Ich wollte auch wissen, wie Sie Hyperlinks in SMS hinzufügen, so dass ein Benutzer eine Webseite öffnen kann, nachdem er auf den Link geklickt hat?

Antwort

1

Wenn die SMS-Nachrichten in der Vergangenheit empfangen wurden, aber nach dem Versuch, einen Hyperlink zu senden, funktioniert es nicht, es könnte sein, dass der von Ihnen verwendete Mobilfunkanbieter Ihre SIM-Karte für verdächtigen SMS-Verkehr gesperrt hat. Nachrichten mit Links werden oft als Spam behandelt.

Versuchen Sie, die SIM-Karte zu ersetzen und eine "Hello World" -Nachricht erneut zu senden.

Die Hyperlinks in SMS werden vom Telefon erkannt und die meisten Smartphones klickbar. Also, einfach die URL in SMS setzen und die Empfänger können darauf klicken. Es funktioniert auf dem iPhone und den meisten Android-Handys.

+0

sms.sendTextMessage (num, null, „Hallo, ich bin“ + mUserName + „nehmen Sie mich in Ihre einzigartige Kontaktliste, und Sie müssen nie aktualisieren“ mehr + "alle Änderungen klicken! unten, um die App herunterzuladen. "+" https://play.google.com/apps/testing/com.weberz ", sentPI, null); Gefällt dir das richtig? @vmayorow – Sid

+0

Ich versuchte, die Sim zu ändern und es funktionierte für eine Nachricht ohne Link. Aber jetzt, wie man einen Link sendet? Bitte überprüfe, wie ich es versucht habe. @vmayorow – Sid

+0

Das Problem war richtig sim wurde blockiert .. Danke .. @vmayorow – Sid

2

Sie wurden wahrscheinlich wegen Ihres SMS-Providers blockiert. Da sie normalerweise Links blockieren, die von privaten Kunden gesendet werden, um Spam zu vermeiden.

Fügen Sie einen Hyperlink in eine SMS, fügen Sie einfach die URL als eine normale Zeichenfolge ein. So wie du es mit normalem Text machst. Die meisten Smartphones werden einen Link analysieren und es "klickbar" machen, auch wenn es sich um eine SMS handelt. Verwenden Sie eine Bibliothek, die Ihre URL verkürzt, da SMS auf 160 Zeichen begrenzt sind. Dies ist die Bibliothek, die ich verwende: https://github.com/vekexasia/android-googl-shortener-lib.

Um eine SMS ich zu verwenden empfehlen zu senden:

void sendSMS(String phoneNumber, String message) { 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(phoneNumber, null, message, null, null); 
     } 

Diese Methode verwendet SmsManager, die (API 19) sehr einfach zu bedienen ist. Für weitere Informationen: Download https://developer.android.com/reference/android/telephony/SmsManager.html

+0

sms.sendTextMessage (num, null, "Hallo, ich bin" + mUserName + "fügen Sie mich zu Ihrer einzigartigen Kontaktliste und Sie brauchen nie zu aktualisieren "+" keine Änderungen mehr! Klicken Sie unten auf den Download, um die App herunterzuladen. "+" play.google.com/apps/testing/com.weberz "; sentPI, null); Gefällt dir das [email protected] Cédric Portmann – Sid

+1

Sie vermasselt etwas mit dem ";". Es sollte so sein: sms.sendTextMessage (num, null, "Hallo, ich bin" + mUserName + "füge mich zu deiner einzigartigen Kontaktliste hinzu und du musst nie" + "irgendwelche Änderungen updaten! Klicke auf den Download unten um die App. "+" Play.google.com/apps/testing/com.weberz ", sentPI, null); –

+0

Und fügen Sie sentPI nur hinzu, wenn Sie einen "PendingIntent (sentIntent)" benötigen. –

Verwandte Themen