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();
}