2011-03-15 3 views
1

Android 개발을 처음 사용합니다. 나는 Gmail을 통해 내 모토로라 이정표에 파일을 이메일로 다음 코드를 사용하려고합니다.sdcard에서 파일에 액세스하기 android

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
    sendIntent.setType("audio/mp3"); 
    sendIntent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/king1.mp3"); 
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
    sendIntent.putExtra(Intent.EXTRA_TEXT, "this is the email content2"); 
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/king1.mp3")); 
    startActivity(Intent.createChooser(sendIntent, "Title:")); 

코드를 실행하면 이메일이 전송되지만 첨부 파일은 0kb입니다. 이 문제는 인터넷의 다른 곳에서 본 적이 있지만 파일에 올바른 경로를 선언 할 것인지 확실하지 않습니다. 파일의 정확한 경로를 어떻게 알 수 있습니까? 내가 마운트하면 얻을 수있는 경로는/Volumes/NO NAME/king1.mp3입니다.

또는

은 내가 먼저 FileInputStream에를 사용하여 파일을 읽어해야합니까?

정말 고마워요!

답변

2

는 SD 카드의 루트를 얻을 수

Environment.getExternalStorageDirectory()

을보십시오.

+0

오, 고마워, 일하고있어 :) 루트가 참으로/sdcard라고 밝혀졌습니다. – shiraz

+0

그러나 컴퓨터에 마운트 된 sdcard를 유지하면 컴퓨터가 전화를받지 못하게됩니다. – shiraz

+1

루트는 다른 장치에서 다를 수 있습니다. – sanna

1

내 장치에서 외부 sd 데이터는 'external_sd'라는 추가 디렉토리에 있습니다. Environment.getExternalStorageDirectory()는 sd 카드의 루트 디렉토리를 제공하지만 컴퓨터에서 장치에 데이터를 가져온 경우 "file : //"+ Environment.getExternalStorageDirectory() + "/ external_sd /"에있을 수 있습니다.

이것은 기기에서 '내 파일'앱을 사용하는 것만으로 분명했습니다. USB를 통해 컴퓨터에 마운트했을 때 external_sd 디렉토리 수준이 분명하지 않습니다.