에이치의 모바일 앱 개발
error message dialog activity version 1.0.1 본문
/**
* Created by lsh on 2016-08-03.
* version 1.0.1
*/
public class ErrorMessageDialogActivity extends Activity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
Init();
}
private void Init() {
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setFinishOnTouchOutside(false);
Intent intent = getIntent();
String errorMessage = intent.getStringExtra("Message");
SendMessage sendMessage = new SendMessage(errorMessage);
setContentView(makingLayout(sendMessage));
}
/**
* 다이어 로그 생성
* @param sendMessage 전송될 에러 로그
*/
private View makingLayout(final SendMessage sendMessage) {
LinearLayout layout = new LinearLayout(this);
TextView txt_message = new TextView(this);
Button btn_send = new Button(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(params);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setGravity(Gravity.CENTER_HORIZONTAL);
layout.setPadding(10, 10, 10, 10);
txt_message.setLayoutParams(params);
txt_message.setGravity(Gravity.LEFT);
btn_send.setLayoutParams(params);
btn_send.setGravity(Gravity.CENTER_VERTICAL);
txt_message.setText("에러 발생\n예기치 못한 오류가 발생되어 앱이 종료되었습니다.\n에러 리포트를 전송 하기겠습니까?");
btn_send.setText("확인");
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendMessage.email(context);
System.exit(0);
}
});
layout.addView(txt_message);
layout.addView(btn_send);
return layout;
}
}
/**
* Created by lsh on 2016-08-04. * version 1.0.1
*/
public class SendMessage {
private String message;
public SendMessage(String message) {
if (message != null) {
this.message = message;
} else {
this.message = "";
}
}
public void email(Context context) {
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.addCategory(Intent.CATEGORY_DEFAULT);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"lsh228@odsay.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "App Error Report");
emailIntent.putExtra(Intent.EXTRA_TEXT, message);
if(context != null) {
PackageManager pm = context.getPackageManager();
List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
ResolveInfo best = null;
for (final ResolveInfo info : matches) {
if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) {
best = info;
}
}
if (best != null) {
emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
context.startActivity(emailIntent);
} else {
context.startActivity(Intent.createChooser(emailIntent, "이메일 앱 선택"));
}
}
}
}
'Android > Android 개발 소스' 카테고리의 다른 글
다른 앱 연결 1.0.2 <방법 1> (0) | 2017.12.23 |
---|---|
restart application version 1.0.1 (0) | 2017.12.23 |
uncaughtexception version 1.0.2 (0) | 2017.12.23 |
File & I/O (0) | 2017.12.23 |
DBunzip version 1.0.1 (0) | 2017.12.23 |