无法在 Android 上使用 Cloud Firestore 保存文档

Posted

技术标签:

【中文标题】无法在 Android 上使用 Cloud Firestore 保存文档【英文标题】:Can't save document using cloud firestore on android 【发布时间】:2019-01-08 11:49:09 【问题描述】:

我正在尝试按照 cloud firestore 上的文档将文档保存在集合中。我可以读取我在 Firebase 控制台上手动创建的集合/文档,但尝试从我的 android 应用程序存储时不起作用。

控制台/Logcat 没有显示任何错误,应用程序也没有崩溃。 两个听众都没有被叫到。 我错过了什么吗?

class UserActivity : AppCompatActivity() 
    private val db = FirebaseFirestore.getInstance()
    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_profile)
        save_button.setOnClickListener  storeUser() 
    

    private fun storeUser()
        val user = HashMap<String,Any>()
        user.put("first", "Ada")
        user.put("last", "Lovelace")
        user.put("born", 1815)

        db.collection("users")
                .add(user)
                .addOnSuccessListener(OnSuccessListener<DocumentReference>  documentReference -> Log.d("Storing User", "DocumentSnapshot added with ID: " + documentReference.id) )
                .addOnFailureListener(OnFailureListener  e -> Log.w("Storing User", "Error adding document", e) )
    

编辑:

尝试读取文档的更新会引发以下异常

com.google.firebase.firestore.FirebaseFirestoreException:未能 获取文档,因为客户端离线。

【问题讨论】:

只有在数据提交到服务器或被服务器拒绝后,才会调用成功/失败侦听器。你确定你已经连接到服务器了吗? 您是否拥有将数据保存到数据库的正确权限? @FrankvanPuffelen 我想是的,正如我在问题上所说的,我可以从数据库中读取数据。 @AlexMamo 我在创建数据库时选择了“测试”选项。这是默认服务 cloud.firestore match /databases/database/documents match /document=** allow read, write; 【参考方案1】:

看来我需要在 AndroidManifest.xml

中添加以下权限
<uses-permission android:name="android.permission.INTERNET" />

但我觉得这很奇怪,因为没有它我可以使用 firebase auth 方法登录。

【讨论】:

【参考方案2】:

我遇到了同样的问题。卡巴斯基杀毒软件是有罪的。禁用您的防病毒软件。 https://***.com/a/50535344/3456124

【讨论】:

以上是关于无法在 Android 上使用 Cloud Firestore 保存文档的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Cloud Messaging - 更改 Android 上 Web 通知的默认 Chrome 图标

Android 应用错误 - 您必须在 Google Cloud 项目上启用结算功能

Phaser HTML5 应用程序通过Phonegap Cloud Build 移植后无法播放声音

Android 通过 github actions 自动化打包 并发布 fir.im 爬坑记

webhook呼叫语音失败

Android 借助 Python 实现自动打包上传 fir