2012-01-20 2 views
6

블루투스를 통해 파일을 보내는 것에 대한 귀하의 답을 보았습니다. (응답 : Jun 13 '11, 5:01)블루투스를 통해 여러 파일 보내기

Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/jpeg"); 
i.putExtra(Intent.EXTRA_STREAM, Uri.parse("/sdcard/file.jpg")); 
startActivity(Intent.createChooser(i, "Send Image")); 

예! 그것은 작동합니다. 파일을 보내려면 기본 Bluetooth 도구/창/대화 상자가 열립니다. 하지만 더 많은 파일을 보내는 법을 가르쳐 주시겠습니까? 여기에 의미가 있습니다

String xFile[3] = { "aa.txt", "bb.txt", "cc.txt" }; 

Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain"); 

for (int i = 0; i < 3; i ++) { 
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(xFile[i]))); 
    startActivity(intent); 
} 

내 코드는 ...이지만, 3 배의 기본 블루투스 도구/창/대화 상자가 열립니다! @@ 10 개의 파일이 있으면 기본 Bluetooth 도구/창/대화 상자가 10 번 열립니다 !!

기본 Bluetooth 도구/창/대화 상자를 한 번 열고 모든 파일을 보내는 방법을 알고 싶습니까?

미리 감사드립니다.

답변

1

이것은 아주 간단한 운동이지만 비용이 따릅니다! SD 카드 저장 공간.

예, 여러 파일을 SDCard에 덤프해야합니다.

SDCard에 덤프 된 각 파일에 대해 Uri의 배열 목록을 만들어야합니다.

ArrayList<Uri> listDumpedFileUris = new ArrayList<Uri>(); 
Uri uriFile = Uri.fromFile(new File(dumpedFilePath)); 
listDumpedFileUris.add(uriFile); 

결정적인 부분은 명시 적으로 선택기는 읽기 권한을 부여하는 방법으로 SDCard에에 덤프 파일을 읽을 수, 그리고 더 중요한 것은, 의도의 추가로 배열 목록을 추가해야한다는 의도를 알리는 것입니다 분해 가능한 번들.

Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); 
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, listDumpedFileUris); 
startActivity(Intent.createChooser(intent, "Send these files using...")); 

그러면 모든 파일이 Android의 블루투스 런타임 기능을 통해 전송됩니다. 그런데 , 당신은 명시 적으로 image/jpeg 같이, 예를 들어, 파일에 대한 setType을 지정해야 할 수도 있습니다 :

intent.setType("image/jpeg"); 

유일한 부담이 SDCard에 파일 시스템의 잔재를 정리하는 당신의 부분에있는 대부분 무언가, 안드로이드 사용자는 절대적으로 혐오 스럽습니다!

5

음, 이것은 다음과 같은 방법으로 수행 할 수 있습니다. 보낼 파일 목록을 mMultiSelectData으로 표시하십시오.

ArrayList<Uri> uris = new ArrayList<Uri>(); 
int length = mMultiSelectData.size(); 
Intent mail_int = new Intent(); 
mail_int.setAction(android.content.Intent.ACTION_SEND_MULTIPLE); 
mail_int.setType("*/*"); 
for(int i = 0; i < length; i++) { 
    File file = new File(mMultiSelectData.get(i)); 
    uris.add(Uri.fromFile(file)); 
} 
mail_int.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
mContext.startActivity(mail_int); 

선택 상자가 열립니다. Bluetooth을 선택하면 파일 목록이 전송됩니다.

관련 문제