2016-10-29 3 views
-1

Я довольно новичок в разработке приложений для Android, и я пытаюсь сделать приложение таким образом, чтобы вы вводили текстовое поле, номер получателя в одном тексте поле и сообщение в другом, а затем нажмите кнопку для отправки, не переходя в приложение обмена сообщениями по умолчанию. Я провел некоторое исследование, но не так много их решений работало. Если вы придумаете решение, можете ли вы добавить краткий аргумент в пользу того, почему он работает. Кроме того, я не слишком уверен, если я правильно добавил разрешения Send_SMS и Receive_SMS правильно:Отправить текстовое сообщение без перенаправления на приложение для обмена сообщениями по умолчанию (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

Пожалуйста, объясните, что именно ваши проблемы с существующим кодом. – CommonsWare

+0

Проблема заключается в том, что он отправляется в приложение «Сообщения», а не просто отправляет его прямо из самого приложения. – Skiddswarmik

+1

Я не вижу, как это возможно в этом коде. 'sendTextMessage()' должен отправлять текстовое сообщение напрямую. Если вы еще этого не сделали, попробуйте протестировать это на эмуляторе Android. – CommonsWare

ответ

0

Он должен отправить сообщение напрямую. Plz удаляет ожидающую линию намерения. Если есть проблема, укажите номер телефона в правильном формате с префиксом кода страны.

Вы можете увидеть этот ответ за помощью:
https://stackoverflow.com/a/38940244/5879376

+0

Так должно быть как 1 (234) 467-8901, или должно быть 12345678901 для номера телефона. Я установил формат ввода как второй. Кроме того, как мне реализовать код в ссылке на этот код? – Skiddswarmik

+0

Как указано в ссылке, используйте требуемый код, чтобы выбрать правильный контакт, с которым необходимо отправить sms. –