【发布时间】:2017-10-31 09:45:41
【问题描述】:
我正在尝试将一个包含 URL 作为其属性之一的对象写入我的 firebase 数据库。它失败并出现以下错误。
错误
这个错误比较长(真的很长)但是它只是重复了以下内容然后到此结束
在 com.google.android.gms.internal.zzeas.zzbu(未知来源) 在 com.google.android.gms.internal.zzear.zzbq(未知来源) 在 com.google.android.gms.internal.zzear.zzbt(未知来源) 在 com.google.android.gms.internal.zzeas.zzbu(未知来源) 在 com.google.android.gms.internal.zzear.zzbq(未知来源) 在 com.google.android.gms.internal.zzear.zzbt(未知来源) 在 com.google.android.gms.internal.zzeas.zzbu(未知来源) 在 com.google.android.gms.internal.zzear.zzbq(未知来源) 在 com.google.android.gms.internal.zzear.zzbq(未知来源) 在 com.google.android.gms.internal.zzear.zzbp(未知来源) 在 com.google.firebase.database.DatabaseReference.zza(未知来源) 在 com.google.firebase.database.DatabaseReference.setValue(未知 资源) 在 com.companyName.appName.MyActivity.postDataToFirebase(MyActivity.java:582) 在 com.companyName.appName.MyActivity$13.onSuccess(MyActivity.java:551) 在 com.companyName.appName.MyActivity$13.onSuccess(MyActivity.java:543) 在 com.google.firebase.storage.zzj.zzi(未知来源) 在 com.google.firebase.storage.zzaa.run(未知来源) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6776) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
我能够追踪到当我将我的 URL 包含在我正在写入 firebase 的对象中时它会崩溃,但当我省略 URL 时它不会崩溃。
在我的活动中发布功能
public void postDataToFirebase() {
Log.d(TAG, "triggering postDataToFirebase...");
Uri myURL = https://somewebaddress.com/subpath%2Fotherpath%2FanotherPath%2FV3ipNtaGW3tG%2FhairColor%2F-Op032Dasdfie41ZB98d%2FeyeColor%2F3%2FasdfEesWEWf1341DfWds342%2FintroductionVideo.mp4?alt=media&token=a457i222l-6c6a2-2524l4-zy3m-p7384eo295d0di1;
String greetingValue = "Hi there!";
String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
Log.e(TAG, "This is the current time = " + timestamp);
// Create HashMap of all details to post
Map<String, Object> childUpdate = new HashMap<>();
childUpdate.put("firstName", firstNameTextField.getText().toString());
childUpdate.put("lastName", lastNameTextField.getText().toString());
childUpdate.put("hairColor", hairColorTextField.getText().toString());
childUpdate.put("greetingValue", greetingValue);
childUpdate.put("timestamp", timestamp);
childUpdate.put("URL", myURL); // **NOTE: If I comment out this line, no error occurs
Log.d(TAG, "onSuccess: childUpdate");
Log.d(TAG, childUpdate.toString());
// **ISSUE: The error occurs on the line below
myRef.child("somepath")child(userId).child("someotherpath").setValue(childUpdate);
}
Build.Gradle(应用程序)
我将其包括在内,因为它是在下面提到的问题中提出的
apply plugin: 'com.android.application'
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile "com.android.support:support-v4:25.3.1"
compile "com.android.support:support-v13:25.3.1"
compile "com.android.support:cardview-v7:25.3.1"
compile "com.android.support:appcompat-v7:25.3.1"
compile 'com.android.support:design:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.firebase:firebase-auth:11.4.2'
compile 'com.google.firebase:firebase-database:11.4.2'
compile 'com.google.firebase:firebase-crash:11.4.2'
compile 'com.google.firebase:firebase-config:11.4.2'
compile 'com.google.firebase:firebase-storage:11.4.2'
compile 'com.google.firebase:firebase-messaging:11.4.2'
compile 'com.google.firebase:firebase-core:11.4.2'
compile 'com.firebase:firebase-jobdispatcher:0.6.0'
compile 'com.android.volley:volley:1.0.0'
testCompile 'junit:junit:4.12'
}
List<String> dirs = [
'main', // main sample code; look here for the interesting stuff.
'common', // components that are reused by multiple samples
'template'] // boilerplate code that is generated by the sample template process
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.company.appname"
minSdkVersion 21
targetSdkVersion 26
versionCode 19
versionName "4.8"
multiDexEnabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
main {
dirs.each { dir ->
java.srcDirs "src/${dir}/java"
res.srcDirs "src/${dir}/res"
}
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']
}
buildTypes {
release {
minifyEnabled true // Enables code shrinking for the release build type.
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
productFlavors {
}
}
apply plugin: 'com.google.gms.google-services'
补充:
我还发现这个问题似乎基于错误相似,但我检查并能够进行更新(这在这个问题中是不可能的),让我认为这不是同一个问题。
有谁知道为什么我在不包含 url 的情况下发布到 firebase 的帖子会成功,但在包含网址时却失败(以及如何防止它)?
【问题讨论】:
-
您能否再次检查您发布的代码是否准确反映了您正在运行的内容?最后一条语句包含
setValue(childUpdates)(注意childUpdates末尾的's'),但是您在前面的代码中构建的映射名为childUpdate。 -
@BobSnyder 该帖子现在应该准确地反映我正在运行的内容。我到处跑
childUpdate(没有childUpdates)
标签: android firebase url firebase-realtime-database