2009-11-20 3 views
12

은 내가 여기이 코드를 시도 :"받는 사람"필드가 미리 입력되어있는 전자 메일 응용 프로그램을 시작하려면 어떻게합니까?

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "[email protected]", null)); startActivity(intent); 

을하지만 "지원되지 않는 조치"를 읽고 화면에 메시지가 표시됩니다. 이 아이디어를 얻는 방법에 대한 아이디어가 있습니까?

감사합니다.

/* Create the Intent */ 
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

/* Fill it with Data */ 
emailIntent.setType("plain/text"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); 

/* Send it off to the Activity-Chooser */ 
context.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

주요 조각 : 당신의 주소를 EXTRA_EMAIL를 사용하여 사용자가 설정 한 개 이상의 이메일 클라이언트를 가지고있는 경우 createChooser()를 사용

답변

27

snippet하려고 시도했다.

+3

고마워, 그게 효과적 :) 나는 처음에는 그와 같은 것을 시도했지만 이메일 메시지가 아닌 메시징 화면을 뽑아 냈다. 그 당시에는 에뮬레이터에 전자 메일 계정이 설정되어 있지 않았기 때문이라고 생각합니다. – scuba

+0

최종 키워드는 무엇을 사용 했습니까? 그것은 내가 모르고있는 일종의 최적화를 초래합니까? – Scott

+0

나는 스 니펫을 쓰지 않았다. 개인적으로 나는 거기서 마지막 키워드를 사용하지 않았을 것입니다. – CommonsWare

3

Intent intent = new Intent(
    Intent.ACTION_SENDTO, 
    Uri.parse("mailto:[email protected]") 
); 
startActivity(intent); 
+0

메시지를 보내면 여전히 메시지가 나타납니다. 지원되지 않는 작업 이 작업은 현재 지원되지 않습니다. 토스트 같은 거품. 내 앱에서 사용하도록 매니페스트에 항목을 설정해야하나요? – scuba

1

여기 실제 문제는 공식 에뮬레이터에서 실행 중이며 의도와 다른 내용이 일치하지 않는다고 생각합니다.

필자의 테스트 결과, 의도적 인 URI (setData())가 아무 것도 아니며 공식 Android 에뮬레이터 중 하나에서 실행 중일 때 발생하는 문제입니다. 이것은 실제 장치에서는 발생하지 않으므로 실제 문제가되어서는 안됩니다.

당신이 당신이 의도를 시작하기 전에 무슨 일이 일어날 때를 감지하기 위해이 코드를 사용할 수 있습니다

:

ComponentName emailApp = intent.resolveActivity(getPackageManager()); 
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback"); 
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction); 

(.은 "지원되지 않는 행동"액션 메소드는 com.android.fallback.FallbackActivity 보여줍니다 활동의 이름)

관련 문제