Articles of firebase database

如何从broadcastreceiver使用firebase数据库

我正在尝试使用来自BroadcastReceiver Firebase数据库来获取一些数据。 不幸的是,用户有时是null ,这意味着我不能使用UID获取数据。 @Override public void onReceive(final Context context, Intent intent) { FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if(user != null){ //sometimes not null }else{ //sometimes null } } }); } FirebaseAuth.getInstance().getCurrentUser有时也为null 。 另外,我的broadcastreceiver接收机里面没有长时间的运行。 我正在谈论的是在它下面没有任何节点的情况下获取单个opjes。 如何从BroadcastReceiver使用Firebase数据库?

使用Firebase的聊天应用程序:收到新消息时收到通知 – Android

我正在开发一个使用Firebase实时数据库的聊天应用程序。 我已经能够正确地发送和接收消息。 现在,我希望在收到新消息时执行通知。 为此,我创build了一个使用ChildEventListener监听数据库更改的Service并创build通知。 问题是,我在onChildAdded方法中创build通知,并且此方法触发数据库中的现有节点和新的节点。 当用户从应用程序来回导航时,这会导致为相同的消息创build多次通知。 以下是我如何实施它: chatMsgsRef.orderByChild(FirebaseDBKeys.LOCATION_LAST_UPDATED).addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { ChatMessage message = dataSnapshot.getValue(ChatMessage.class); if (!message.getSenderId().equals(currentUserId)) { mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(NotificationsService.this) .setSmallIcon(R.drawable.message) .setContentTitle("New Message from " + message.getReceipientName()) .setContentText(message.getMessage()) .setOnlyAlertOnce(true) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); mBuilder.setAutoCancel(true); mBuilder.setLocalOnly(false); mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); } } @Override public void onChildChanged(DataSnapshot dataSnapshot, […]

Firebase回收站适配器分页

mFirebaseAdapter = new FirebaseRecyclerAdapter<Restaurant, FirebaseRestaurantViewHolder> (Restaurant.class, R.layout.restaurant_list_item, FirebaseRestaurantViewHolder.class, mRestaurantReference) 我有像mRestaurantReference 1000个元素/对象。 如果我使用上面的代码,我肯定会遇到性能问题,所以我必须分页。 那么如何使用FirebaseRecyclerAdapter分页数据呢?

在Firebase群组消息传递应用中实施已读回执function

我想在我的Firebase群组消息应用中实施“已看到”function。 你能不能build议采取最好和最有效的方法(工作代码将不胜感激)? 例如,该应用程序会在群组消息中显示“ 由6看 ”或“ 由15看 ”。 这是我的项目: https : //github.com/firebase/friendlychat/tree/master/android 以下是MainActivity: https : //github.com/firebase/friendlychat/blob/master/android/app/src/main/java/com/google/firebase/codelab/friendlychat/MainActivity.java

从Firebase中获取数据的限制,以执行刷新以及加载更多function

然而,现在我从FireBase获取所有数据。我想要做的是一次获取15条logging中的LIMITS数据。 就像第一次用户从Firebase获取15条logging一样,当用户在屏幕的底部/顶部加载更多的数据时,另有15条logging应该来自Firebase并添加到列表的底部/顶部。 我已经实现了从Firebase数据库顶部或底部获取15条logging的逻辑,如下所示: public class ChatActivity extends AppCompatActivity implements FirebaseAuth.AuthStateListener { private FirebaseAuth mAuth; private DatabaseReference mChatRef; private Query postQuery; private String newestPostId; private String oldestPostId; private int startAt = 0; private SwipeRefreshLayout swipeRefreshLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chat); mAuth = FirebaseAuth.getInstance(); mAuth.addAuthStateListener(this); mChatRef = FirebaseDatabase.getInstance().getReference(); mChatRef = mChatRef.child("chats"); /////GETTING THE VIEW […]

Firebase的Android分页

我正在构build一个应用程序,将显示存储在firebase上的video。 video列表需要分页获取最近20个video。 这是我认为会工作的代码 private void getVideos() { Query videosQuery = FirebaseUtil.getVideosRef(); videosQuery.startAt(0); videosQuery.endAt(1); ChildEventListener videosChildEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { String date = dataSnapshot.getKey(); String temp = date; } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void […]

使用Searchview过滤Firebase上的数据

我正在使用Firebase-UI的FirebaseRecyclerAdapter。 列表工作正常,但我无法在SearchView中实现filter。 我的用户数据库: Firebase用户 private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users"); private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { recyclerView = (RecyclerView) findViewById(R.id.rv); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setHasFixedSize(true); UserAdapter userAdapter = new UserAdapter( User.class, R.layout.user, UserAdapter.UserViewHolder.class, reference ); recyclerView.setAdapter(userAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_activity, menu); MenuItem item = menu.findItem(R.id.search); searchView = (SearchView) MenuItemCompat.getActionView(item); searchView.setOnQueryTextListener(this); } […]

在Firebase身份validation(android)之后创build数据库中的用户

我正在构build一个Android应用程序,我想我的用户是Auth然后添加到数据库。 目前,我只使用电子邮件和密码进行身份validation,然后单击注册,并在Firebase控制台的“身份validation”部分中创build用户。 但我也希望我的用户被添加到数据库中。 我想添加更多的字段(如姓名,地址等),这些字段将存储在Firebase的用户数据库中。 我真的不知道该怎么做。 任何人都可以解释吗? 谢谢!

具有空视图的FirebaseRecyclerAdapter

我知道有很多方法可以为RecyclerView创build一个空视图。 但我的问题是FirebaseRecyclerView。 我的布局是: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/feed_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" /> <ProgressBar android:id="@+id/feed_loading" style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:visibility="gone"/> </RelativeLayout> 所以我在RecyclerView填充它的项目之前显示加载ProgressBar。 现在,如果服务器没有任何项目。 在这种情况下,我的RecyclerView总是空的,我的加载ProgressBar总是可见的用户。 因此,我不想无限期地显示ProgressBar,而是想显示一些空的布局。 例如“找不到数据”或类似的信息。 最后的结果应该是:ProgressBar应该显示,直到数据被加载到RecyclerView和一旦数据被加载ProgressBar应该是不可见的。 但是,如果服务器中没有数据,则应该显示一些空的布局而不是ProgressBar。 在正常的RecyclerView中,我们有一个数据集(一些ArrayList等),如果它是空的,那么我们可以显示空的布局。 但在FirebaseRecyclerAdapter的情况下,我没有在我的活动或上下文中的快照的参考。 我也没有任何callback告诉我,服务器中没有数据。 任何解决方法都将有所帮助。

如何在Item Click上从FirebaseListAdapter获取obj键。 FirebaseUI

在FirebaseUI中对FirebaseListAdapter进行子类化时,如何获取单击的项目的obj键? FirebaseListAdapter具有以下获取itemId的方法,但返回long。 但是我需要使用默认string格式的对象键。 public long getItemId(int i) { return (long)this.mSnapshots.getItem(i).getKey().hashCode(); }