문자 수신을 할경우 textview에 수신자 연락처와 메시지를 표시하고 싶습니다.
작성 코드는
main 부분은
-----------------------------------------------------------------------------------------------------------------------------------------------------
package kwu.ac.final_;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class SMS extends Activity {
Button Sendbtn;
EditText InputNumber;
EditText InputText;
TextView ReceiveMSG;
String SENT = "SMS_SENT";
String DELIVERED="SMS_DELIVERED";
private String test2 = "";
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
ReceiveMSG = (TextView)findViewById(R.id.textView3);
test2 = intent.getStringExtra("test2");
ReceiveMSG.setText(test2);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.
이부분은 문자 송신 부분
.
}
}
--------------------------------------------------------------------------------------------------------------------------
문자 수신은
---------------------------------------------------------------------------------------------------------------------------
package kwu.ac.final_;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class Smsreceiver extends BroadcastReceiver {
static final String logTag = "SmsReceiver";
static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION)) {
//Bundel null check
Bundle bundle = intent.getExtras();
if (bundle == null) {
return;
}
//pdu object null check
Object[] pdusObj = (Object[]) bundle.get("pdus");
if (pdusObj == null) {
return;
}
String str = "";
//message
SmsMessage[] smsMessages = new SmsMessage[pdusObj.length];
for (int i = 0; i < pdusObj.length; i++) {
smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
str = "SMS from"+smsMessages[i].getOriginatingAddress();
str +="\n";
str += smsMessages[i].getMessageBody().toString(); // 임의의 스트링 변수에 값 넣음
}
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
intent.putExtra("test2", str);
intent.setClass(context, RedirectActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
---------------------------------------------------------------------------------------------------------------------------
문자 수신하는 것을 전달 받아서 main에 넘겨줄 소스는
package kwu.ac.final_;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class RedirectActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
intent.setClass(RedirectActivity.this, SMS.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
---------------------------------------------------------------------------------------------------------------------------
웹에 올려주신 자료들을 모아 위의 소스와 같이 작성 하였습니다.
하지만 DDMS를 통해 문자를 보낼때 문자 수신은 되지만 아무런 반응이 없습니다.
왕 초보 수준이라 어디부터 손보고 이해해야 할지 답이 안나오네요
고수분들 도와주세요~~
메니페스트에는 문자 송수신관련 permission 은 모두 등록했습니다