获取InputStream时,NPE用于为ClientClideSecrets传递Client_secret.json

时间:2017-12-28 07:34:41

标签: java android

我正在关注Google Calendar API的快速入门指南,但在输入流上将我的代码作为NPE。这完全是代码的副本。

try
{
    // Your work
}
catch(NumberFormatException ex)
{
    System.out.println("wrong input");

}

请帮忙解决,我读了许多博客和问题给出了不同的解决方案,比如把道路的完整路径放在一起,所以我尝试了你喜欢的 D:\ Android Development \ Mycalpp \ app \ client_Secret.json但是没有人能够在Android工作室中解决这个问题。

BGTask是Class扩展到AsyncTask。这里也在示例1中显示了相同的代码。

https://www.programcreek.com/java-api-examples/index.php?api=com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets

2 个答案:

答案 0 :(得分:0)

以下是您可以做的事情:

选项1:

将文件(client_secret.json)放在assets /文件夹中。

然后这样读:

    InputStream in = getAssets().open("client_secret.json");
    GoogleClientSecrets clientSecrets =
            GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

选项2:

将文件(client_secret.json)放在res / raw文件夹中(如果没有原始文件夹创建它)。

然后这样读:

Resources res = getResources();
InputStream in = res.openRawResource(R.raw.client_secret);
GoogleClientSecrets clientSecrets =
            GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

希望它有所帮助!!!

答案 1 :(得分:-1)

getResourceAsStream将从您的类路径(而不是源目录)中读取文件,因此请确保client_secret.json与您的Java类一起部署并且在您的类路径中