데스크톱을 사용하여 google 드라이브에 apk 파일을 업로드했습니다.Android - Google 드라이브에서 Android SDCARD로 파일을 다운로드하는 방법?
이제 안드로이드 활동에서 버튼을 클릭하면 해당 apk 파일을 내 안드로이드 SDCARD로 다운로드해야합니다. 이것을 달성하는 방법.
데스크톱을 사용하여 google 드라이브에 apk 파일을 업로드했습니다.Android - Google 드라이브에서 Android SDCARD로 파일을 다운로드하는 방법?
이제 안드로이드 활동에서 버튼을 클릭하면 해당 apk 파일을 내 안드로이드 SDCARD로 다운로드해야합니다. 이것을 달성하는 방법.
먼저 드라이브를 DRIVE_FILE 범위에서 열어야하므로 RESTful API을 사용해야합니다. GDAA에는 FILE 범위 만 있으며 Android 앱이 만들지 않은 항목은 표시되지 않습니다. 평온한 API에서
, 3 단계 과정에 저장 올바르게 착각해라. 3 단계는 다른 곳에서도 잘 설명되어 있습니다. 다음은 몇 가지가 아웃 오브 컨텍스트 위의 코드 (AsyncTask를 같은) 비 UI 스레드에 있어야 코드에서
com.google.api.client.googleapis.extensions
.android.gms.auth.GoogleAccountCredential _crd =
GoogleAccountCredential.usingOAuth2(this, Arrays.asList(DriveScopes.DRIVE_FILE));
com.google.api.services.drive.Drive _svc =
new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), _crd).build();
// step 1: get the file list of files
com.google.api.services.drive.model.FileList gooLst =
_svc.files().list().setQ([YOUR_REQUEST_STRING])
.setFields("items(title,downloadUrl)").execute();
// get the URL from your list matching the title with the requested one
// step 2: get the file contents
InputStream is = _svc.getRequestFactory()
.buildGetRequest(new GenericUrl([URL_FROM_LIST]))
.execute().getContent();
// step 3: stream it to you file
strm2File(is, [YOUR_FILE_NAME]);
private void strm2File(InputStream inStrm, String flNm) {
try {
OutputStream outStrm =
new FileOutputStream(new java.io.File(_ctx.getExternalFilesDir(null), flNm));
try {
try {
final byte[] buffer = new byte[1024];
int read;
while (((read = inStrm.read(buffer)) != -1) && (!isCancelled()))
outStrm.write(buffer, 0, read);
outStrm.flush();
} finally {outStrm.close();}
} catch (Exception e) {}
inStrm.close();
} catch (Exception e) {}
}
1 단계와 2 단계를 도울 수이고에가 오류 처리의 많은이 있습니다 주위에 (UserRecoverableAuthIOException ...) 구현해야합니다.
이것은 새로운 Android API를 사용하여 간단하게 수행 할 수 있습니다. 웹에 업로드 한 앱과 Android의 앱 ID가 동일한 경우 앱에 이미 파일에 대한 액세스 권한이 있습니다. 이 경우 query 기능을 사용하여 파일을 찾을 수 있습니다.
그렇지 않으면 OpenFileActivity을 사용하고 사용자가 다운로드 할 apk를 선택하도록 요청할 수 있습니다.
파일의 DriveId를 가져 오면 read contents 가이드에 따라 콘텐츠를 열 수 있습니다.
나 혼란스러워. 예를 들어 사용자가 브라우저 (draganddrop)를 사용하여 파일을 업로드하면 Android 앱에 액세스 할 수 있다고 말하고 있습니까? – seanpj
아니요, 파일을 업로드 한 웹 앱이 있으면 일치하는 Android 앱에 액세스 할 수 있습니다. 드라이브 웹 UI를 사용하여 파일을 업로드 한 경우 OpenFileActivity 플로를 사용해야합니다. –
죄송합니다 (불쾌한 것은 중간 이름입니다), OpenFileActivity 흐름이 DRIVE_FILE 범위에서 작동한다는 의미입니까? – seanpj
YOUR_REQUEST_STRING 및 URL_FROM_LIST에 대해 자세히 설명 할 수 있습니까? –
YOUR_REQUEST_STRING - 여기에서 "qryClause"변수를 참조하십시오. https://github.com/seanpjanson/RESTDemo/blob/master/app/src/main/java/com/spjanson/restdemo/REST.java. URL_FROM_LIST - gooLst는 객체 목록이며, 각 객체에는 "downloadUrl"멤버 var가 있습니다. – seanpj