오디오 파일을 MMS로 보내는 방법을 못 찾아서 다른 방법으로 우회하기로 했다.
일단 어지간한 소스는 전부 https://developers.google.com/drive/quickstart-android 에서 가져왔다.
구글 드라이브에 특정한 이름의 폴더가 있는지 검사해서 없으면 만들고, 그 폴더에 내가 지정한 파일을 업로드한다.
그리고 그 파일은 다른 사람이 다운로드 받을 수 있게 권한도 변경했다.
근데 매번 아이디 선택하는 화면 떠야만 하는건가….
private void saveFileToDrive() { Thread t = new Thread(new Runnable() { @Override public void run() { try { boolean hasFolder = false; File targetFolder = null; // 폴더 목록 검색 Files.List request = service.files().list().setQ("mimeType='application/vnd.google-apps.folder' and trashed=false"); FileList files = request.execute(); for (File folder : files.getItems()) { // 원하는 폴더 있는지 검사 if (folder.getTitle().equals("TestSendSMS")) { hasFolder = true; targetFolder = folder; break; } } // 원하는 폴더 없으면 새로 만들기 if (!hasFolder) { File folderBody = new File(); folderBody.setTitle("TestSendSMS"); folderBody.setMimeType("application/vnd.google-apps.folder"); targetFolder = service.files().insert(folderBody).execute(); } // 파일 정보 세팅 java.io.File fileContent = new java.io.File(fileUri.getPath()); FileContent mediaContent = new FileContent("audio/mp4", fileContent); // 위에서 정한 폴더에 파일 넣기 File body = new File(); body.setTitle(fileContent.getName()); body.setMimeType("audio/mp4"); body.setShared(true); body.setParents(Arrays.asList(new ParentReference().setId(targetFolder.getId()))); File file = service.files().insert(body, mediaContent).execute(); if (file != null) { // 파일을 전체 공개로 변경하기 Permission permission = new Permission(); permission.setType("anyone"); permission.setRole("reader"); permission.setValue("anyone"); service.permissions().insert(file.getId(), permission).execute(); Log.i("MainActivity.java | run", "|" + file.getWebContentLink()); } } catch (UserRecoverableAuthIOException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); t.start(); }