2013-08-22 3 views
1

내가 내가 내가 사용하고이를 위해 이메일안드로이드 기본 이메일 클라이언트는 위치 Environment.getExternalStorageDirectory()에서 파일을 가져 오지 않습니다. getPath()

를 통해 로그를 보낼 수있는 옵션을 가지고있는 안드로이드 응용 프로그램이 절차를

String outputPath=Environment.getExternalStorageDirectory().getPath()+ File.separator+"sundeeplogs"+ File.separator;  

     File dir = new File (outputPath); 
     if (!dir.exists()) 
     { 
      dir.mkdirs(); 
     } 

     File zipFileSDCard = new File(outputPath+"sundeep_logs.zip"); 

에 이어 지금은 zipFileSDCard에 안전한 위치에있는 지퍼를 복사합니다.

나는 내가 다음 이메일 첨부 파일과 내가 함께 전송됩니다 Gmail 애플리케이션을 사용하여 이메일을 보낼 때 파일이 성공적으로 의도

targetedShare.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(zipFileSDCard)); 

에 zip 파일을 추가

를 복사 된 것을 확인했다 받은 이메일의 첨부 파일을 볼 수 있습니다.

문제 :

내가 그것을 첨부하고 전자 메일이 수신 된 메일에는 첨부 파일이없는 전송되는 경우는 때로는 파일을 첨부 할 것 안드로이드 기본 이메일 클라이언트를 사용

.

마지막으로 첨부 파일이 누락되었지만 기본 클라이언트가 첨부 파일을 삭제하는 이유를 찾을 수없는 문제를 발견했습니다. 이 링크에서 설명한 문제 Unloaded attachment isn't marked for download error in android

답변

0

사용중인 os 버전은 무엇입니까? 오래된 기기에서 Gmail 클라이언트 앱에서는 작동하지 않는 것으로 나타났습니다.

+0

나는 모든 OS 버전에서 테스트를 마쳤으며 모든 문제에 직면하고 있습니다. 네이티브 클라이언트는 전자 메일을 보내기 전에 첨부 파일을 삭제합니다. 모든 OS 버전에서 gmail 앱을 사용하여 잘 작동합니다. 내가 직면하고있는 네이티브 클라이언트의 문제는이 링크에서 설명합니다. http://stackoverflow.com/questions/11555575/unloaded-attachment-isnt-marked-for-download-error-in-android – sundeep

+0

흠 ... that doesn ' 옳은 소리. 내가 (잘, 내부 스토리지를 사용하여) 테스트했지만 잘 작동합니다. Android Manifest 쓰기 권한이 활성화되어 있습니까? –

0

첨부 파일과 관련하여 Gmail은 일부 기본 이메일 응용 프로그램보다 훨씬 관대 한 것으로 보입니다.

많은 분석과 시행 착오 후, 나는 다음과 같은 의도는 Gmail 및 삼성 갤럭시 S5의 기본 이메일 응용 프로그램 (다른 장치에 대한 어떠한 보장)

public static void emailFile(Activity context, File attachmentInCacheDir, String to, String subject, String body) { 
     Intent intent = new Intent(Intent.ACTION_SEND);//SENDTO does not seem to work for native 
     intent.setData(Uri.fromParts("mailto",to, null)); 
     intent.putExtra(Intent.EXTRA_EMAIL, new String[] { to }); 
     intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
     intent.putExtra(Intent.EXTRA_TEXT, body); 
     intent.setType("message/email"); 
     if (attachmentInCacheDir != null) { 
      intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + CachedFileProvider.getAuthority(context) + "/" + attachmentInCacheDir.getName())); 
     } 
     context.startActivityForResult(Intent.createChooser(intent, "Send Email"), 1000); 
    } 

할 수있는 한 모두 작동 발견 Uri로서 공급자를 사용하고 있으므로 공개 디렉토리에 복사하여 데이터를 노출 할 필요가 없습니다. 나는 모든 네이티브 이메일 애플 리케이션이 작동하기위한 또 다른 요구 사항인지 확실하지 않습니다. 공급자를 구현할 때 첨부 파일의 파일 크기를 반환하는 '쿼리'메서드를 구현해야했습니다. 그렇지 않으면 기본 응용 프로그램에서 첨부 파일의 크기를 반환했습니다.