2012-11-08 3 views
1

특정 문서가 첨부 된 전자 메일을 보내는 기능이있는 Android 응용 프로그램을 작성하고 있습니다. 이것은 작동하지만 전자 메일을 첨부 할 때 "peroneal.pdf"라는 첨부 파일 (전자 메일을 수신 할 때 의도 한 것임)이 전자 메일을 받으면 "2131034113.pdf"가됩니다. . 수신 된 문서가 원래 이름을 갖도록 어떻게 변경합니까? 그것은 의도를 명명하는 것과 관련이 있습니까? 그렇다면 어떻게해야합니까? 덕분에 어떤 도움 사전에, 나는 코드를 첨부 :보낸 전자 메일 첨부 파일 이름이 다른 파일과 다릅니다.

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("message/rfc822"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{value.toString()}); 
i.putExtra(Intent.EXTRA_SUBJECT, "Tendon Email"); 
i.putExtra(Intent.EXTRA_TEXT , "The info is attached, just hit send."); 


String rawFolderPath = "android.resource://" + getPackageName() + "/" + R.raw.peroneal; 

Uri emailUri = Uri.parse(rawFolderPath); 
i.putExtra(Intent.EXTRA_STREAM, emailUri); 
i.setType("application/pdf"); 


try { 
    startActivity(Intent.createChooser(i, "Send mail...")); 

} catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(PTSlideShow.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
    } 

답변

1

이 작동 되나 "peroneal.pdf"

아니라고 첨부 파일, 그것은 호출되지 않습니다 "peroneal.pdf", 최소한 장치에는 없습니다.

로컬 파일 시스템에 peroneal.pdf이라는 파일 이름이있을 수 있습니다. 그것은 당신이 분명히 가지고있는 것처럼 자원으로 패키지화 할 때 크게 손실됩니다. 다른 프로세스가 볼 무엇

2131034113R.raw.peroneal의 진수 값이고, android.resource://.../2131034113 (그리고 ... 앱의 패키지 이름입니다).

어떻게 수신 된 문서의 원래 이름이 변경됩니까?

글쎄, 당신은 실제로에서 peroneal.pdf이있는 Uri를 사용하여 확률을 증가 할 것이다. 예를 들어 원시 리소스를 외부 저장소로 복사하고 File 기반의 Uri을 대신 사용할 수 있습니다. 또는 openFile() 기반 ContentProvider을 통해 첨부 파일을 제공하십시오. 여기서 Uriperoneal.pdf으로 끝납니다.

그러나 다른 앱에 사용자를 대신하여 이메일을 보내달라고 요청하는 것을 명심하십시오. 이메일을 작성하고 패키지화하는 방법은 다른 이메일 앱의 작성자에게 달려 있습니다. 귀하의 첨부 파일 이름은 Uri의 마지막 부분에 따라 달라질 수 있습니다. 아마 전자 메일 응용 프로그램이 접근 방식을 취할 것입니다,하지만 나는 조금도 놀라지 않을 것입니다.

관련 문제