안녕하세요
제가 구현하고 싶은 기능은
어플이 백그라운드에서 실행된 상태로 유지하고
SMS를 받으면 SMS 내용을 웹 서버에 전송하는 것이고
성공적으로 전송되었으면 "전송되었습니다." 라는 확인 메세지를 출력하는 어플입니다.
구현이 가능한가요?
가능하다면 어떤 식으로 접근해야되는지요?
구체적이지 않더라도, 관련된 예제나, 접급 방법만이라도 알려주시면 검색해서 공부해보도록 하겠습니다.
제가 알고 있는 지식은 php와 mysql 뿐입니다.
www.****.com/save.php?sms="메세지 내용" 이렇게만 전송하고 전송여부만 확인되면 좋겠는데요
안드로이드 개발 지식이 없어도 쉽게 가능할까요?
답변 부탁드립니다.
감사합니다.
그런 용도로 쓰이나요?
제가 사용하려는 목적은 카드 사용 내역이 SMS로 오면 그 내용을 제 홈페이지로 넘겨서 가계부에 사용카드, 금액, 사용일시 등의 값을 저장하려고 합니다
물론 카드 사용할 때마다 입력해도 되지만 번거로워서 SMS 내용이 바로 웹 가계부로 넘겨지게 하고 싶을 뿐입니다.
방법을 아시면 조언 한마디라도,,, 부탁드려요
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 = ""; // 인텐트에 넣기 위한 임의 String 변수 선언
//message
SmsMessage[] smsMessages = new SmsMessage[pdusObj.length];
for (int i = 0; i < pdusObj.length; i++) {
smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
str = smsMessages[i].getMessageBody(); // 임의의 String 변수에 값 넣음
}
intent.putExtra("test2", str);
intent.setClass(context, RedirectActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
public class RedirectActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
intent.setClass(RedirectActivity.this, TestSMSReceiver.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
public class TestSMSReceiver extends Activity {
private String test2 = "";
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
test2 = intent.getStringExtra("test2");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new SendPost().execute();
}
private class SendPost extends AsyncTask<Void, Void, String> {
private String test2 = "";
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
test2 = intent.getStringExtra("test2");
}
protected String doInBackground(Void... unused) {
String content = executeClient();
return content;
}
protected void onPostExecute(String result) {
// 모두 작업을 마치고 실행할 일 (메소드 등등)
}
// 실제 전송하는 부분
public String executeClient() {
ArrayList<NameValuePair> post = new ArrayList<NameValuePair>();
post.add(new BasicNameValuePair("sms", test2));
// 연결 HttpClient 객체 생성
HttpClient client = new DefaultHttpClient();
// 객체 연결 설정 부분, 연결 최대시간 등등
HttpParams params = client.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);
// Post객체 생성
HttpPost httpPost = new HttpPost("http://www.***.com/save.php");
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(post, "UTF-8");
httpPost.setEntity(entity);
client.execute(httpPost);
return EntityUtils.getContentCharSet(entity);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}




이것은 요새 유행하는 소액결제 사기에 쓰이는...