인 텐트를 사용하는 Android 다중 이메일 첨부 파일
나는 인 텐트를 사용하여 첨부 파일 (이미지 파일, 오디오 파일 등)이있는 이메일을 보내는 Android 프로그램에서 ACTION_SEND
. 이 프로그램은 이메일에 단일 첨부 파일이있을 때 작동합니다. 내가 사용하는 Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
메일에 지정된 이미지 파일을 첨부하고 잘 작동되고, 메일은 Gmail을 통해 전달 될 수있다. 그러나 Intent.putExtra(android.content.Intent.EXTRA_STREAM, uri)
여러 번 호출하여 동일한 메일에 여러 이미지를 첨부하려고 하면 작동하지 않습니다. 이메일에 첨부 파일이 표시되지 않습니다.
이메일 첨부 파일에 대한 SDK 문서 및 Android 프로그래밍 사용자 그룹을 검색했지만 관련 정보를 찾을 수 없습니다. 그러나 ACTION_SEND_MULTIPLE
내 요구 사항을 충족 할 수있는 또 다른 의도 상수 (API 레벨 4부터 사용 가능) 가 있음을 발견했습니다 . SDK 문서에 따르면 단순히 다른 사람에게 여러 데이터를 전달한다고 명시 ACTION_SEND
하고 데이터가 여러 개라는 점을 제외하면. 하지만 여전히이 명령의 올바른 사용법을 알아낼 수 없었습니다. 을 사용하여 의도를 선언 ACTION_SEND_MULTIPLE
한 다음 putExtra(EXTRA_STREAM, uri)
여러 번 호출 하여 여러 이미지를 첨부하려고했지만 이전과 동일한 잘못된 결과를 얻었으며 첨부 파일이 이메일에 표시되지 않았습니다.
누구든지 ACTION_SEND_MULTIPLE
여러 전자 메일 첨부 파일을 사용해 보았 습니까?
다음은 여러 첨부 파일을 포함하는 emailIntent를 만드는 데 필요한 코드입니다.
public static void email(Context context, String emailTo, String emailCC,
String subject, String emailText, List<String> filePaths)
{
//need to "send multiple" to get more than one attachment
final Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
new String[]{emailTo});
emailIntent.putExtra(android.content.Intent.EXTRA_CC,
new String[]{emailCC});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, emailText);
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<Uri>();
//convert from paths to Android friendly Parcelable Uri's
for (String file : filePaths)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
}
ACTION_SEND_MULTIPLE
행동이어야한다
그리고 emailIntent.setType("text/plain");
뒤에 :
ArrayList<Uri> uris = new ArrayList<Uri>();
String[] filePaths = new String[] {"sdcard/sample.png", "sdcard/sample.png"};
for (String file : filePaths)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(emailIntent);
이것은 나를 위해 작동합니다.
이것은 오래된 스레드이지만 Google 검색에서 맨 위에 표시되므로 완료하기 위해 작은 힌트를 추가하고 싶기 때문에 난처했습니다.
메일 활동을 위해 첨부 파일을 읽을 수 있도록해야합니다. 그렇지 않으면 첨부되지 않습니다. 그래서 당신은 어딘가에 전화해야
fileIn.setReadable(true, false)
여기에서 좋은 예를 찾았습니다 http://www.blackmoonit.com/2010/02/filebrowser-send-receive-intents/
당신은 사용해야합니다
final Intent aIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
aIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,theUris);
aIntent.setType(theOverallMIMEtype);
여러 첨부 파일의 경우 PutParcelableArrayListExtra(Intent.ExtraStream, uris)
uris 변수가있는 List<IParcelable>().
경우 사용 예 는 다음과 같습니다.
var email = new Intent(Intent.ActionSendMultiple);
email.SetType("text/plain");
email.PutExtra(Intent.ExtraEmail, new string[]{emailTo});
email.PutExtra(Intent.ExtraCc, new string[]{emailCC});
var uris = new List<IParcelable>();
filePaths.ForEach(file=> {
var fileIn = new File(file);
var uri = Android.Net.Uri.FromFile(fileIn);
uris.Add(uri);
});
email.PutParcelableArrayListExtra(Intent.ExtraStream, uris);
context.StartActivity(Intent.CreateChooser(email, "Send mail..."));
도움이 되었기를 바랍니다 ;)
참고 URL : https://stackoverflow.com/questions/2264622/android-multiple-email-attachments-using-intent
'Programming' 카테고리의 다른 글
자바 스크립트 : gulpfile.js에서 package.json 데이터 가져 오기 (0) | 2020.08.22 |
---|---|
unix : ///var/run/docker.sock에서 Docker 데몬 소켓에 연결하는 동안 권한이 거부되었습니다. (0) | 2020.08.22 |
문자열의 처음 100 자 출력 (0) | 2020.08.22 |
Windows 라이선스 키의 모든 순열 (0) | 2020.08.22 |
다른 페이지에서 로그인이 필요한 페이지에 액세스하기위한 CURL (0) | 2020.08.22 |