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
(私は、SELECTをクリックするにもかかわらず、ドライブファイルのピッカーから)。したがって、getMetadata()
を呼び出すと、null
が返されます。
これは、状況が悪くなる可能性がある場所をさらに示唆していますか?
ありがとうございました。申し訳ありませんが、私は実際の 'onResult'コードを削除して、例を簡潔にして、そのコメントに置き換えました。私が与えた例では、あなたのコードをそこに置くことができました。 'isSuccess()'をチェックすることは決してありません。 –