【发布时间】:2017-02-08 11:04:45
【问题描述】:
我的应用使用 Firebase。我使用 ChildEventListener 来获取数据。
mTaixeReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String strTen = dataSnapshot.child("ten").getValue(String.class);
String strSdt = dataSnapshot.child("sdt").getValue(String.class);
String strLong = dataSnapshot.child("longtitude").getValue(String.class);
String strLat = dataSnapshot.child("latitude").getValue(String.class);
String strDiemden = dataSnapshot.child("diemden").getValue(String.class);
String strThoigian=dataSnapshot.child("thoigian").getValue(String.class);
//Toast.makeText(MapsActivity.this,"Toa do: "+strLat+","+strLong,Toast.LENGTH_LONG).show();
double dblLong = Double.parseDouble(strLong);
double dblLat = Double.parseDouble(strLat);
//Marker marker=mMap.addMarker(new MarkerOptions().position(new LatLng(dblLat,dblLong)).title(strTen));
marker = mMap.addMarker(new MarkerOptions().position(new LatLng(dblLat, dblLong)).
icon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon(strDiemden)))
.title(strTen+"\n"+strThoigian).snippet("Sđt: "+strSdt+"\n Loại xe: "+strLoaixe+"\n Giá: "+strGia));
Markers.put(dataSnapshot.getKey(), marker);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
/* if (Markers.containsKey(dataSnapshot.getKey())) {
String strLong = dataSnapshot.child("longtitude").getValue(String.class);
String strLat = dataSnapshot.child("latitude").getValue(String.class);
Marker marker = Markers.get(dataSnapshot.getKey());
marker.setPosition(new LatLng(Double.parseDouble(strLat),
Double.parseDouble(strLong)));
}*/
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
/* if (Markers.containsKey(dataSnapshot.getKey())) {
Marker marker = Markers.get(dataSnapshot.getKey());
marker.remove();
}*/
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
);
当我这样设置规则时效果很好
{
"rules": {
"Taixe":{
".read": true,
".write": true
}
}
}
因为我只想在大约 10 分钟内获取数据,所以我改变了:
{
"rules": {
"Taixe":{
"$Taixe":{
".read": "data.child('timestamp').val() > (now - 600000)",
".write": true
}
}
}
}
我无法获取数据。这种情况下如何通过 ChildEvenListener 获取数据?
这是我的数据:
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-security