如何在Android Studio中使用Google Sheets API v4并解决credential.json找不到问题
Android端Google Sheets API v4找不到credential.json问题解决方案
错误原因
你当前直接复用了桌面端Java版的Sheets API快速入门代码,使用FileInputStream读取系统根路径下的/credential.json,Android应用无法访问该路径,所以触发文件找不到异常。
1. 凭证文件存放位置
- 在项目
app/src/main目录下新建assets文件夹(如果不存在,可右键main目录 → New → Folder → Assets Folder 快速创建) - 将下载的
credential.json文件直接放入该assets文件夹中
2. 修复凭证读取代码
需要改用Android平台专用的Assets资源读取逻辑,修改代码如下:
- 先删除原有错误的常量定义:
// 删掉这行 private static final String CREDENTIALS_FILE_PATH = "/credential.json";
- 修改
getCredentials方法,增加Context参数,改用AssetsManager读取凭证:
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT, Context context) throws IOException { // 读取assets目录下的凭证文件 InputStream in = context.getAssets().open("credential.json"); if (in == null) { throw new FileNotFoundException("Resource not found: credential.json"); } GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // 原有剩余逻辑暂时保留,后续需要调整 }
- 修改
doShit方法中调用getCredentials的代码,传入Context参数:
// 原来的getCredentials(HTTP_TRANSPORT)改成下面的 Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT, MainActivity.this)) .setApplicationName(APPLICATION_NAME) .build();
3. 后续适配注意事项
你当前代码中使用的AuthorizationCodeInstalledApp、LocalServerReceiver、FileDataStoreFactory均为桌面端Java专用类,在Android平台无法正常运行,修复凭证读取问题后还需要做以下适配:
- 替换桌面端授权逻辑,使用Google Sign-In for Android SDK获取OAuth2凭证
- 替换
FileDataStoreFactory,使用Android本地存储方案(如SharedPreferences)存储授权令牌 - 不要在主线程执行网络请求,需要放到子线程或者用协程/WorkManager实现
内容的提问来源于stack exchange,提问作者רועי פנחסי
相关产品推荐
相关产品推荐

