You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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,提问作者רועי פנחסי

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:54:03