Android/App개발2011. 5. 11. 11:02

Intent.ACTION_SEND를 이용하여 Email, MMS 앱에 파라메터를 번들형태로 넘겨서 해당 액티비티를 호출하는 것이 가능하다.

Email의 경우 아래와 같이 하면 된다.


Intent i=new Intent(Intent.ACTION_SEND); 

i.addCategory(Intent.CATEGORY_DEFAULT); 

    

// for EMail
// mimetype

i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, "제목입니다."); 

i.putExtra(Intent.EXTRA_TEXT, "본문이구요 ....");

i.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"user1@website.com"}); 

i.putExtra(Intent.EXTRA_CC, new String[]{"user_cc1@website.com"user_cc2@website.com"}); 

i.putExtra(Intent.EXTRA_BCC, new String[]{"user_bcc1@website.com"}); 

// 파일 첨부
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mic_rec3.wav"));

// 앱선택 박스를 띄움.

startActivity(Intent.createChooser(i, "How do you want to send message?"));


MMS의 경우는 아래와 같이 Extra정보를 설정한다.    

// for MMS

i.putExtra("address", "07011111111;01022222222");

i.putExtra("exit_on_sent", true);

i.putExtra("sms_body", "MMS 테스트입니다."); 

startActivity(Intent.createChooser(i, "How do you want to send message?"));


앱선택박스를 띄우지 않고 바로 특정 앱(MMS, GMail)으로 바로 연결되도록 하려면 해당하는 액티비티 Component를 Intent에 등록하면 된다.

// com.google.android.gm 패키지의 ComposeActivityGmail 액티비티를 명시적으로 기입해도 될듯~!

i.setComponent(new ComponentName("com.google.android.gm","com.google.android.gm.ComposeActivity"));


그러나 위와 같이 하면 permission에러가 나면서 해당 액티비티가 호출되지 않는다.
권한문제를 피해가기 위해 Intent.createChooser()를 이용하여 해당 액티비티로 연결하도록 되어 있다.

이를 피하기 위해서는 권한 문제가 없는 자체적인 Mail client나 MMS client를 직접 작성해야 할것으로 보인다.
그러나 이 문제도 권한문제로 인해 구현이 불가할 수 있다.



Posted by 삼스