私は自分のアプリで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>
単にテキストを 'smsMessage'文字列に連結するのはどうですか? – abbath