我是android新手,我能够在kotlin中为我的应用程序设置firebase。如果我在Nexus 5X API 27 emulator中运行该应用程序,我就能够获取数据库,但当我在实际设备三星S5(Google play Services V 12.5.29,android V 5.0)中运行该应用程序时,我无法获得addValueEventListener回调。
ref = FirebaseDatabase.getInstance().reference
ref!!.addValueEventListener(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError?) {
Log.d("firebase", "cancelled")
}
override fun onDataChange(p0: DataSnapshot?) {
if (p0!!.exists()){
Log.d("firebase", "date = $p0")
} else {
Log.d("firebase", "no data")
}
}
})
Gradle文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.wonder"
minSdkVersion 21
targetSdkVersion 21
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.google.firebase:firebase-messaging:11.2.2'
implementation 'com.google.firebase:firebase-database:11.2.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-
core:3.0.1'
//implementation 'com.google.android.gms:play-services-maps:11.2.2'
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.google.firebase:firebase-core:11.2.2'
// implementation 'com.google.android.gms:play-services-ads:12.0.0'
}
apply plugin: 'com.google.gms.google-services'
我知道这不是数据库规则的问题,因为它们被设置为公共的。
如果你有任何建议,请告诉我。
谢谢
编辑:我有权限添加在清单文件
更新:看起来它的设备工作,我只需要等待30分钟。我离开了设备,过了一会儿回来,数据就在那里。这可能是线程问题吗?我不做任何线程,认为Firebase自己处理它。
你的应用可能与该设备不兼容。检查您支持的最小版本和设置,使您的应用程序也与此设备兼容。
(或)
检查回调:
通过调用Firebase数据库引用上的RemveEventListener()方法,可以删除回调。
"如果侦听器已多次添加到数据位置,则每个事件都会多次调用该侦听器,并且必须将其分离相同次数才能完全删除。在父侦听器上调用RemveEventListener()不会自动删除在其子节点上注册的侦听器;还必须在任何子侦听器上调用RemveEventListener()来删除回调。"
(或)
如果类名或文件名中有一些特殊字符,请重命名它,因为某些设备会灰显无效字符。
如果在设备上使用版本构建,则可能会发生这种情况。确保已将版本sha1添加到firebase应用程序控制台中。
单击添加指纹以输入您的版本sha1。
在您的模拟器中,它可能正在工作,因为您已在firebase应用程序密钥中添加了调试sha1和包名。
检查此项以生成发布版本的sha1
确保在应用的清单文件(主清单文件)中,您有:
我使用以下方法计算行数 和列中的条目 这两种方法在模拟器上都可以正常工作,但在真实设备上会出错...... 知道哪里出问题了吗?谢谢你。 我得到一个错误日志:-
这个小部件在模拟器4.1.2上工作得很好,当安装在真正的设备上时,它甚至不会显示在小部件列表上,就像安装了一样,但我不能让它正常工作。 下面是manifest.xml 和小部件提供程序
这段代码在模拟器iphone 8 Plus上按预期运行,但当运行到iphone 8 Plus或iphone 6上时,这段控制台日志将失败,导致这种奇怪的结果。Mac和两款iPhone都运行当前的操作系统版本。 urlString为http://museum-dev.williams.edu:3003/id?labid=E8EE71C6F5822
我正在开发一个颤抖应用程序,其中包括谷歌登录火库。Google登录在模拟器上可以正常工作,但是当我导出签名捆绑包并在物理设备上进行测试时。它不起作用。我需要在 gradle 文件中添加任何内容吗?有人可以指导我吗?
我不太清楚为什么会发生这种情况。我一直在做一些研究,但情况太模糊了,我甚至很难找到解决办法。 我使用Android Studio创建了一个应用程序,并一直在一个虚拟仿真器上运行,其中< code>Toast功能使用这两行简单的代码运行良好 但当我在手机上运行这个应用程序时,它一直死机。我有Galaxy Grand Prime,甚至不确定它是否重要。
我试图制作一个跨平台的JavaFX应用程序,它在Windows和OSX机器上工作得很好,但在Linux上不行。 jar是在Intellij思想中使用基本的JavaFX配置构建的。 有人帮忙吗?