2016-10-29 3 views
-1

Je suis assez nouveau pour le développement d'applications Android et j'essaie de faire l'application de sorte que vous tapez dans le champ de texte le numéro de téléphone des destinataires dans un texte champ et le message dans un autre, puis appuyez sur un bouton pour qu'il envoie Sans aller à l'application de messagerie par défaut. J'ai fait quelques recherches, mais pas beaucoup de leurs solutions ont fonctionné. Si vous trouvez une solution, pourriez-vous ajouter une brève raison pour expliquer pourquoi cela fonctionne? Aussi je ne suis pas trop sûr si j'ajouté correctement correctement les permissions Send_SMS et Receive_SMS:Envoyer un message texte à sans rediriger vers l'application de messagerie par défaut (Android Studio)

MainActivity.java

import android.app.PendingIntent; 
import android.content.Intent; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

EditText no,msg; 
Button button; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    no = (EditText)findViewById(R.id.phone); 
    msg = (EditText)findViewById(R.id.message); 
    button = (Button)findViewById(R.id.buttonsms); 



    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String noString = no.getText().toString(); 
      String msgMsg = msg.getText().toString(); 
      sendSms(noString, msgMsg); 
     } 
    }); 
} 

private void sendSms(String phoneNumber, String message) { 
    PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0); 
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, pi, null); 
} 

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.skiddswarmik.messageproto"> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

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

+1

S'il vous plaît expliquer exactement quels sont vos problèmes avec votre code existant. – CommonsWare

+0

Le problème est qu'il envoie à l'application Messages plutôt que de l'envoyer directement à partir de l'application elle-même – Skiddswarmik

+1

Je ne vois pas comment cela est possible dans ce code. 'sendTextMessage()' devrait envoyer le message texte directement. Si vous ne l'avez pas déjà fait, essayez de le tester sur l'émulateur Android. – CommonsWare

Répondre

0

Il devrait envoyer le message directement. Plz supprime la ligne d'intention en attente. S'il y a un problème, fournissez le numéro de téléphone dans le bon format avec le préfixe du code du pays.

Vous pouvez voir cette réponse à l'aide:
https://stackoverflow.com/a/38940244/5879376

+0

Donc devrait-il être comme 1 (234) 467-8901 ou devrait-il être 12345678901 pour le numéro de téléphone. J'ai défini le format d'entrée comme le second. Aussi, comment pourrais-je implémenter le code dans le lien vers ce code? – Skiddswarmik

+0

Comme indiqué dans le lien, utilisez le code requis pour sélectionner le bon contact auquel envoyer le SMS. –