我一直在努力解决这个问题。半天,无法找到任何解决方案。
在Android Lollipop和其他人的下方工作。
主要尝试所有解决方案。
FailureListener
。代码:
DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReferenceFromUrl(constants.FIREBASE_URL+"rootssahaj/authGplus/users/teachers");
ProfileInformation pro= new ProfileInformation(email,personName,personPhotoUrll,personGooglePlusProfile,personPhotoUrllThumb,"true");
Log.e("SahajLOGwq", "CalledInside" +prefs.getBoolean("callProfileToFireBase",true)+" Email: "+EmailPref +pro+" yo > "+pro.getUserNAME());
mFirebaseRef.child(EmailPref).child("profile").setValue(pro, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
Log.e("SahajLOGwq", "Data could not be saved. " + databaseError.getMessage());
} else {
Log.e("SahajLOGwq", "Data saved successfully.");
}
}
});
logcat的:
08-07 01:18:32.866 30547-30547 / com.rana.sahaj.myyu E / SahajLOGwq:NOTICE__android USER SIGNED IN
08-07 01:18:32.921 30547-30547 / com.rana.sahaj.myyu E / SahajLOGwq:CalledOutsidetrue
08-07 01:18:32.922 30547-30547 / com.rana.sahaj.myyu E / SahajLOGwq:CalledInsidetrue Email:narveshrana68 com.rana.sahaj.myyu.profile.ProfileInformation@e6ddcfd yo> Narvesh Rana
*现在的规则
{
"rules": {
".read": true,
".write": true
}
}
*编辑:
这是我在Firebase的Debug LogLevel之后找到的
08-07 18:22:08.275 8863-9013 / com.rana.sahaj.myyu D / RepoOperation:set:/ testforwrite
08-07 18:22:08.275 8863-9013 / com.rana.sahaj.myyu D / DataOperation:set:/ testforwrite true
08-07 18:22:08.289 8863-9013 / com.rana.sahaj.myyu D / RepoOperation:中止路径的事务:/ testforwrite。受影响:/ testforwrite
08-07 18:22:08.290 8863-9013 / com.rana.sahaj.myyu D / RepoOperation:set:/ rootssahaj / authGplus / users / teachers / narveshrana68 / profile
08-07 18:22:08.291 8863-9013 / com.rana.sahaj.myyu D / DataOperation:set:/ rootssahaj / authGplus / users / teachers / narveshrana68 / profile { isTeacher =真 picurl = https://l400 picurl50DP = https://lh230 USEREMAIL = na.om userNAME = Narvesh Rana
}
08-07 18:22:08.296 8863-9013 / com.rana.sahaj.myyu D / RepoOperation:中止路径的交易:/ rootssahaj /
答案 0 :(得分:0)
当我连接到wifi时,我能够在Lollipop上复制并获得相同的D/RepoOperation: Aborting transactions for path: /testforwrite. Affected: /testforwrite
,禁用实际的Internet连接,然后重新启用Internet连接(所有设备均保持与wifi网络的连接) )。此后,如果我尝试执行setValue()写入,则在Firebase重新连接和setValue()完成之前,大约需要18分钟。我联系了Firebase团队,并被告知这是预期的行为,因为Android OS基本上在恢复连接时忽略了通知应用程序。
根据我的经验,解决的唯一方法是禁用和重新启用WiFi,或者重新启动应用程序(重新启动活动无济于事)。
Firebase支持回到我身边,建议先调用goOffline(),然后再调用goOnline()-我验证了这一点可以立即重新连接Firebase数据库。我现在要做的是为我自己的setValue()超时设置一个Handler,因为我似乎不依赖于onComplete()抛出DatabaseError。