SMS을 전송받으면 그 내용과 발신자정보 발신시간을 SmS브로드캐스트를 사용하여 긁어온후 제가 만든어플의
내용란에 들어가게 되고 그 내용을 지정된 Email로 자동으로 전송되는 어플을 개발중입니다. 거의 다 완성되어
자동으로 메일이 전송되긴 합니다만, 문제가 하나 생겼습니다 ㅠㅠ 생각지도 못했던 부분이라..ㅠㅠ


위와 같이 SMS가 스마트폰으로 전송이 되면 제가 만든 어플이 바로 실행됩니다. 그리고 문제는 저기서 홈키를 누르든
Back키(스마트폰자체의)를 눌러서 저 화면을 벗어나야 이 다음SMS가 왓을시 Email이 전송이 됩니다. 저화면상에서 다시 SMS가 올경우는
SMS내용과 발신정보는 Message란에 긁어와지는데 Email전송이 먹통이 됩니다. 그 이유를 알고싶고, 그리고
Email이 발송되어지면 Message Sent라는 토스트가 뜨는데 그 이후에 저 앱을 백그라운드로 빼고 화면을 홈이나 하고있던작업으로
자동으로 돌아가게 하고싶습니다. 즉 어플이 종료되게끔 하고싶습니다. 아니면 처음부터 앱을 백그라운드로 돌리고 싶습니다. 어떻게 해야할까요..ㅠㅠ
안드로이드 스튜디오가 처음이고 JAVA또한 처음이라 쉽지않네요 ㅠㅠ 많이 도와주세요 아래에 코딩 Main코딩 첨부하겠습니다 ㅠㅠ
package com.example.kwak.emailsendtest;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//Declaring EditText
private TextView emailTextView;
private EditText editTextSubject;
private TextView messageTextView;
//Send button
private Button buttonSend;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
messageTextView = (TextView) findViewById(R.id.messageTextView);
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "SMS 수신 권한 있음.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "SMS 수신 권한 없음.", Toast.LENGTH_LONG).show();
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECEIVE_SMS)) {
Toast.makeText(this, "SMS 권한 설명 필요함.", Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.RECEIVE_SMS},
1);
}
}
// 전달된 인텐트를 처리합니다.
Intent passedIntent = getIntent();
processIntent(passedIntent);
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
String email = emailTextView.getText().toString().trim();
String subject = editTextSubject.getText().toString().trim();
String message = messageTextView.getText().toString().trim();
sendEmail();
}
/**
* 이 액티비티가 SINGLE_TOP 플래그로 되어 있으면 이 메소드로 인텐트가 전달됩니다.
*/
protected void onNewIntent(Intent intent) {
// 전달된 인텐트를 처리합니다.
processIntent(intent);
super.onNewIntent(intent);
}
/**
* 전달된 인텐트를 처리합니다.
*
* @param intent
*/
private void processIntent(Intent intent) {
if (intent != null) {
// 발신 번호
String sender = intent.getStringExtra("sender");
// 수신 내용
String contents = intent.getStringExtra("contents");
// 시간
String receivedDate = intent.getStringExtra("receivedDate");
emailTextView = (TextView) findViewById(R.id.emailTextView);
editTextSubject = (EditText) findViewById(R.id.editTextSubject);
messageTextView = (TextView) findViewById(R.id.messageTextView);
if (sender != null) {
messageTextView.setText(sender + "에서 문자수신\n" + "[" + receivedDate + "] \n" + contents);
}
}
buttonSend = (Button) findViewById(R.id.buttonSend);
//Adding click listener
buttonSend.setOnClickListener(this);
}
private void sendEmail() {
//Getting content for email
String email = emailTextView.getText().toString().trim();
String subject = editTextSubject.getText().toString().trim();
String message = messageTextView.getText().toString().trim();
//Creating SendMail object
SendMail sm = new SendMail(this, email, subject, message);
//Executing sendmail to send email
sm.execute();
}
@Override
public void onClick(View v) {
sendEmail();
}
}
코드 끝부분에 onClick(View v) sendEmail부분은
처음에 클릭해서 전송시켰다가 자동으로 전송을 위해 onCreate 안에 sendEmail 포함시켜서 수동 자동 둘다 되게 해놓은거입니다 ㅎ