Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FileInputStream不会引发此类文件或目录异常-Firebase rest API用户身份验证_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android FileInputStream不会引发此类文件或目录异常-Firebase rest API用户身份验证

Android FileInputStream不会引发此类文件或目录异常-Firebase rest API用户身份验证,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,根据本教程,我尝试对Firebase实时数据库REST API进行身份验证调用: 我在Android Studio中的登录活动中有这段代码,出于某种原因,在尝试读取“cmov.json”时,我总是会遇到一个异常-open failed:enoint(没有这样的文件或目录)。我将该文件放在我创建的“资产”文件夹中,当我尝试删除该文件时,会收到一条使用警告,询问我是否确实要删除该文件,因此我假设我是从代码中的正确路径读取的。为什么FileInputStream没有引发这样的文件或目录异常 资产是开发

根据本教程,我尝试对Firebase实时数据库REST API进行身份验证调用:

我在Android Studio中的登录活动中有这段代码,出于某种原因,在尝试读取“cmov.json”时,我总是会遇到一个异常-open failed:enoint(没有这样的文件或目录)。我将该文件放在我创建的“资产”文件夹中,当我尝试删除该文件时,会收到一条使用警告,询问我是否确实要删除该文件,因此我假设我是从代码中的正确路径读取的。为什么FileInputStream没有引发这样的文件或目录异常


资产是开发计算机上的文件。它们不是安卓设备上的文件

在资产上打开
InputStream
,而不是
FileInputStream


如果并且当您开始使用设备上的实际文件时,请不要将一些字符串传递给
File
FileInputStream
构造函数。使用适当的方法派生或的文件系统路径。

资产是开发机器上的文件。它们不是安卓设备上的文件

在资产上打开
InputStream
,而不是
FileInputStream

如果并且当您开始使用设备上的实际文件时,请不要将一些字符串传递给
File
FileInputStream
构造函数。使用适当的方法派生或的文件系统路径

您需要将其替换为以下内容:

AssetManager assetManager = getApplicationContext().getAssets();
GoogleCredential googleCred = GoogleCredential.fromStream(assetManager.open("cmov.json"));
如果文件位于
资产中
,即使Android Studio在您键入文件时使其看起来像是链接到文件,也找不到它,因为
FileInputStream
意味着它正在Android设备上查找文件。从技术上讲,您的JSON文件在APK中

注意:我要做的是,在应用程序的内部存储中检查该文件,如果该文件不存在,请复制它。下次用户打开应用程序时,文件将在那里,并且不会被复制。通过这种方式,可以更容易地访问该文件,并且如果需要,可以在Android设备上使用该文件

您需要将其替换为以下内容:

AssetManager assetManager = getApplicationContext().getAssets();
GoogleCredential googleCred = GoogleCredential.fromStream(assetManager.open("cmov.json"));
如果文件位于
资产中
,即使Android Studio在您键入文件时使其看起来像是链接到文件,也找不到它,因为
FileInputStream
意味着它正在Android设备上查找文件。从技术上讲,您的JSON文件在APK中

注意:我要做的是,在应用程序的内部存储中检查该文件,如果该文件不存在,请复制它。下次用户打开应用程序时,文件将在那里,并且不会被复制。通过这种方式,可以更容易地访问该文件,并且如果需要,可以在Android设备上使用该文件

AssetManager assetManager = getApplicationContext().getAssets();
GoogleCredential googleCred = GoogleCredential.fromStream(assetManager.open("cmov.json"));