3

Google Drive Android API は初めてで、学習中です。しかし、Google Drive Android API を使用してファイルを削除できないという問題が発生しました。その例はありません。この質問で私を助けることができますか?どうもありがとう。

4

5 に答える 5

5

更新 (2015 年 4 月)
GDAA には、最終的に独自の「ごみ箱」機能があり、以下の回答は無関係です。

元の回答:
上でシェリルが述べたように、これら 2 つの API を組み合わせることができます。

hereから取得した次のコード スニペットは、その方法を示しています。

まず、 GoogleApiClient...services.drive.Driveの両方にアクセスします。

GoogleApiClient _gac;
com.google.api.services.drive.Drive _drvSvc;

public void init(MainActivity ctx, String email){
  // build GDAA  GoogleApiClient
  _gac = new GoogleApiClient.Builder(ctx).addApi(com.google.android.gms.drive.Drive.API)
        .addScope(com.google.android.gms.drive.Drive.SCOPE_FILE).setAccountName(email)
        .addConnectionCallbacks(ctx).addOnConnectionFailedListener(ctx).build();

  // build RESTFul (DriveSDKv2) service to fall back to for DELETE
  com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential crd =
  GoogleAccountCredential
    .usingOAuth2(ctx, Arrays.asList(com.google.api.services.drive.DriveScopes.DRIVE_FILE));
  crd.setSelectedAccountName(email);
  _drvSvc = new com.google.api.services.drive.Drive.Builder(
          AndroidHttp.newCompatibleTransport(), new GsonFactory(), crd).build();
}

次に、GDAA の DriveId で RESTful API 呼び出しを実装します。

public void trash(DriveId dId) {
  try {
    String fileID =  dId.getResourceId();
      if (fileID != null)
        _drvSvc.files().trash(fileID).execute();
  } catch (Exception e) {} 
}

public void delete(DriveId dId) {
  try {
    String fileID = dId.getResourceId();
      if (fileID != null)
        _drvSvc.files().delete(fileID).execute();
  } catch (Exception e) {} 
}

...そして出来上がり、ファイルを削除しています。そしていつものように、問題がないわけではありません。

まず、ファイルを作成した直後にファイルを削除しようとすると、getResourceId()が失敗し、 nullが返されます。ここでの問題とは関係ありません。

そして第二に、それはハックです! また、TRASH および DELETE 機能の GDAA 実装を過ぎてコードに留まるべきではありません。

于 2014-03-13T04:04:41.243 に答える
1

https://developers.google.com/drive/v2/reference/files/delete

ファイルとサービスのインスタンスを削除するには、ファイル ID が必要です。

import com.google.api.services.drive.Drive;

... 

private static void deleteFile(Drive service, String fileId) {
    try {
      service.files().delete(fileId).execute();
    } catch (IOException e) {
      System.out.println("An error occurred: " + e);
    }
  }
于 2014-03-10T09:08:50.027 に答える
1

ファイルの削除はまだサポートされていません。このような場合は、いつでも RESTful API を使用するようにフォールバックできます。

于 2014-03-10T15:50:50.740 に答える