0

Google ドライブからの読み取りデータを Android アプリケーションに取り込もうとしています。サンプル アプリケーション (DriveQuickstart - https://developers.google.com/drive/quickstart-android ) の手順に従うことから始めました。)、同じエラーが発生しました。問題は、fileList.execute(); を呼び出すときです。次のコードでは、BaseDexClassLoader が ClassNotFoundException をスローしたことをデバッガーが報告しています。この例外をキャッチしてメッセージを出力すると、パラメーター文字列が null であってはならないことがわかります。これは私の環境に問題があると確信しているので、プロジェクトをセットアップするためのすべての指示に従っていることを確認しました。Java Build Path と、このプロジェクトの Android ターゲット (現在は Android + Google API に設定されています) をいじってみましたが、何も役に立ちません。どんなアイデアでも大歓迎です!

    private void downloadFile() {
    Thread t = new Thread(new Runnable() {
      @Override
      public void run() {
        try {
            Files.List fileList = service.files().list().setQ("title = 'tester'");
            FileList files = fileList.execute();  //This line causes an exception when executed.
              ArrayList<File> myFiles = new ArrayList<File>(1);
              myFiles.addAll(files.getItems());
              File file = myFiles.get(0);
              InputStream inStream = downloadFile(service,file);
              String docText = convertStreamToString(inStream);
              Log.v("TAG", docText);
          }
          catch (UserRecoverableAuthIOException e) {
          startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
        } catch (IOException e) {
          e.printStackTrace();
        } catch (Exception e) {
            System.out.println(e.toString() );
        }
      }
    });
    t.start();
  }

同じ問題が発生するサンプル アプリのメソッドを次に示します。

  private void saveFileToDrive() {
Thread t = new Thread(new Runnable() {
  @Override
  public void run() {
    try {
      // File's binary content
      java.io.File fileContent = new java.io.File(fileUri.getPath());
      FileContent mediaContent = new FileContent("image/jpeg", fileContent);

      // File's metadata.
      File body = new File();
      body.setTitle(fileContent.getName());
      body.setMimeType("image/jpeg");

      File file = service.files().insert(body, mediaContent).execute(); //Same exception encountered
      if (file != null) {
        showToast("Photo uploaded: " + file.getTitle());
        startCameraIntent();
      }
    } catch (UserRecoverableAuthIOException e) {
      startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
});
t.start();

}

4

2 に答える 2

0

Birdman独自のソリューションを使用して、追加のcatch(例外e)を追加した部分も機能するようになりました。それは半解決策にすぎないかもしれませんが。

更新:スレッドを一時停止しているエラーが飲み込まれた場合、ドライブクイックスタートアプリが機能することがわかりました。デバッグせずに実行しただけでアプリが機能していることに気づきました。問題を引き起こしていた行の後に「catch」を追加しました。これでコードをデバッグでき、正常に動作します。この例外が発生しているように見え、無視する必要があるのは奇妙に思えます。–バードマン1月23日20:06

于 2013-03-11T11:22:41.660 に答える