Google 드라이브 API를 사용하여 사용자가 파일을 선택하고 (지금까지) 메타 데이터를 가져올 수 있습니다. 나는 (추출) 어디에 있어요 여기Android : Google 드라이브 getMetaData()가 콜백을 호출하지 않습니다.
는 다음과 같습니다
@Override
public void onConnected(Bundle connectionHint) {
super.onConnected(connectionHint);
IntentSender intentSender = Drive.DriveApi
.newOpenFileActivityBuilder()
.build(getGoogleApiClient());
try {
startIntentSenderForResult(
intentSender, REQUEST_CODE_OPENER, null, 0, 0, 0);
} catch (SendIntentException e) {
Log.w(TAG, "Unable to send intent", e);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_CODE_OPENER:
if (resultCode == RESULT_OK) {
if (data != null) {
DriveId driveId = data.getParcelableExtra(OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
Log.d(TAG, "driveId = " + driveId.encodeToString());
//driveId.asDriveResource().getMetadata(getGoogleApiClient())
driveId.asDriveFile().getMetadata(getGoogleApiClient())
.setResultCallback(new ResultCallback<DriveResource.MetadataResult>() {
public void onResult(@NonNull DriveResource.MetadataResult mdr) {
// Never gets here
}
});
}
}
break;
default:
super.onActivityResult(requestCode, resultCode, data);
}
}
은 잘 작동하는 것 같다. 그것은 DriveId
을 기록하고 getMetadata()
호출을 찾습니다. 하지만 결코 콜백을 호출하지 않습니다. onResult()
에 도달하지 못했습니다.
API 문서와 Google 예제 코드를 연구 할 때 분명히 잘못된 점을 분명히하고있는 것처럼 느껴질 수 있습니다.
편집 추가 :
내가setResultCallback()
await()
에 (스레드에서) 사용에서 변경하려고했으나
DriveID
다시 괜찮 동안
MetadataResult
이있다
CANCELED
의 statusCode
(나는 선택을 클릭해도 드라이브 파일 선택기에서). 따라서 getMetadata()
을 호출하면 null
이 반환됩니다.
상황이 잘못 될 수 있다는 점을 더 시사합니까?
감사합니다. 미안합니다. 예를 간단하게하기 위해 실제 onResult 코드를 제거하고 그 주석으로 대체했습니다. 실행은 어디에도 없었습니다. 내가 준 예제에서, 거기에 코드를 넣었 으면 결코 isSuccess()를 체크하지 않을 것이다. –