2016-08-24 7 views
-1

私は自分のアプリでSMSサービスを実装しています。今では私のアプリの中からSMSを電話番号に送ることができますが、受信したテキストに最後にアプリケーションを使ってテキストが送信されたことを知るため別のメッセージを表示します。それは可能ですか?もしそうなら、どのように?以下は私のSendSMSActivityとReceiveSMSActivityです。どんな助けでも大歓迎です。感謝:)アンドロイドアプリからSMSサービス経由でテキストが送信されるたびに、別のデフォルトテキストを送信するにはどうすればよいですか?

SendSMSActivity

package com.golo.acer.mrestro4; 

import android.app.Activity; 
import android.content.Intent; 
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 SendSmsActivity extends Activity { 

    Button sendSmsBtn; 
    EditText toPhoneNumber; 
    EditText smsMessageET; 

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

     sendSmsBtn = (Button) findViewById(R.id.btnSendSMS); 
     toPhoneNumber = (EditText) findViewById(R.id.editTextPhoneNo); 
     smsMessageET = (EditText) findViewById(R.id.editTextSMS); 

     sendSmsBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       sendSms(); 
      } 
     }); 
    } 

    private void sendSms() { 
     String toPhone = toPhoneNumber.getText().toString(); 
     String smsMessage = smsMessageET.getText().toString(); 

     try { 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(toPhone, null, smsMessage, null, null); 

      Toast.makeText(this, "SMS sent", Toast.LENGTH_LONG).show(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    public void goToInbox(View v) { 
     Intent intent = new Intent(SendSmsActivity.this, ReceiveSMSActivity.class); 
     startActivity(intent); 
    } 

    public void moveToSmsActivity(View view) { 
     Intent intent = new Intent(this, SmsActivity.class); 
     startActivity(intent); 
    } 
} 

ReceiveSMSActivity

package com.golo.acer.mrestro4; 

import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 


public class ReceiveSMSActivity extends Activity implements AdapterView.OnItemClickListener{ 

    private static ReceiveSMSActivity inst; 
    ArrayList<String> smsMessageList = new ArrayList<String>(); 
    ListView smsListView; 
    ArrayAdapter arrayAdapter; 

    public static ReceiveSMSActivity instance() { 
     return inst; 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     inst = this; 
    } 

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

     smsListView = (ListView) findViewById(R.id.SMSList); 
     arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, smsMessageList); 
     smsListView.setAdapter(arrayAdapter); 
     smsListView.setOnItemClickListener(this); 

     refreshSmsInbox(); 
    } 

    public void refreshSmsInbox() { 
     ContentResolver contentResolver = getContentResolver(); 
     Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null); 
     int indexBody = smsInboxCursor.getColumnIndex("body"); 
     int indexAddress = smsInboxCursor.getColumnIndex("address"); 
     int timeMillis = smsInboxCursor.getColumnIndex("date"); 
     Date date = new Date(timeMillis); 
     SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy"); 
     String dateText = format.format(date); 

     if(indexBody < 0 || !smsInboxCursor.moveToFirst()) return; 
     arrayAdapter.clear(); 
     do { 
      String str = smsInboxCursor.getString(indexAddress) + " at " 
        + "\n" + smsInboxCursor.getString(indexBody) + dateText + "\n"; 
      arrayAdapter.add(str); 
     } while(smsInboxCursor.moveToNext()); 
    } 

    public void updateList(final String smsMessage) { 
     arrayAdapter.insert(smsMessage, 0); 
     arrayAdapter.notifyDataSetChanged(); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     try { 
      String[] smsMessages = smsMessageList.get(position).split("\n"); 
      String address = smsMessages[0]; 
      String smsMessage = ""; 

      for(int i = 1; i < smsMessages.length; i++) { 
       smsMessage += smsMessages[i]; 
      } 

      String smsMessageStr = address + "\n"; 
      smsMessageStr += smsMessage; 
      Toast.makeText(this, smsMessageStr, Toast.LENGTH_SHORT).show(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public void goToCompose(View v) { 
     Intent intent = new Intent(ReceiveSMSActivity.this, SendSmsActivity.class); 
     startActivity(intent); 
    } 
} 

activity_send_sms.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:id="@+id/mainLayout" 
    android:weightSum="1" 
    android:background="#ffcecbff" > 

    <TextView 
     android:id="@+id/textView" 
     android:text="Compose New Message" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_gravity="center_horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 


    <TextView 
     android:id="@+id/textViewPhoneNumber" 
     android:text="Phone Number" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/editTextPhoneNo" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="phone" /> 

    <TextView 
     android:id="@+id/textViewMessage" 
     android:text="SMS Message" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/editTextSMS" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textMultiLine" /> 


    <Button 
     android:layout_gravity="center_horizontal" 
     android:id="@+id/btnSendSMS" 
     android:text="Send" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/btnInbox" 
     android:text="Inbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="goToInbox"/> 

</LinearLayout> 
+2

単にテキストを 'smsMessage'文字列に連結するのはどうですか? – abbath

答えて

1

はい、smsMessage変数を、あなたが望むテキストと連結して連結することができます。例えばのために

:あなたのsendSMS機能で:

String smsMessage = smsMessageET.getText().toString(); 
smsMessage+="\n\nBy My Application"; 

私は、これはあなたが、コメントをお気軽に役立つことを願っています。

+0

ありがとうございました!私は別の問題があります。テキストが実際にアプリを使用して送信され、他の人がそれをタイプして送信したということを保証する方法はありますか?おそらく、テキストや何かの色を変えるでしょうか? – Bik

+0

これを達成することができますが、カスタムアダプタを使用してSMSリストを表示する必要があり、1つのビューには2つのコントロール、1つのTextView for SMS、2つ目のTextViewが署名テキストとして表示されます。 setTextColor、setTextSizeなどのプロパティを設定する必要があります。リストビュー用のsuctomアダプタを作成して検索する必要があります。 – Mahamadali

+0

私はちょっと混乱しています。私は編集でxmlレイアウトを追加しました。署名テキストを「M-Restro App経由で送信済み」と少し太字で追加するコードを編集できますか?ありがとう:) – Bik

関連する問題