我一直在努力将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();
}
答案 0 :(得分:0)
使用Birdman自己的解决方案,我得到了一个部分,我添加了一个额外的捕获(例外e)也工作。尽管它可能只是一个半解决方案。
更新:我发现Drive Quickstart应用程序在我暂停线程的错误被吞下时可以正常工作。我注意到应用程序在运行时没有调试。在导致故障的行之后添加了一个额外的“catch”,现在我可以调试代码并且它工作正常。虽然这个异常似乎已经发生并且必须被忽略,但这对我来说似乎很奇怪。 - 鸟人1月23日20:06
答案 1 :(得分:0)
选择项目&gt;属性&gt; Java构建路径&gt; Eclipse菜单中的库。
您是否尝试在[java build path]的[order and export]上检查Android私有库。
或者更新到最新的android sdk和google api版本?