android - 检索 Firebase 数据库中存储的 url 时,应用程序崩溃并给出错误 Can't conversion object of type java.lang.String to type android.net.Uri

标签 android firebase firebase-realtime-database

我已在 firebase 数据库中添加了 imageUrl,当我尝试检索该 url 应用程序时崩溃了。 这是我的事件监听器代码:

DatabaseReference valueRef = myRef.child("Users").child(name);
                valueRef.child("ProfileUrl").addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        photoUrl= dataSnapshot.getValue(Uri.class);
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

错误出现在使用 photoUrl 的第 5 行。

我已经定义了 myRef = database.getReference(); 并将 photoUrl 列为 Uri。但它仍然说无法将字符串转换为 uri。我不明白当所有内容都在 uri 中时,字符串从哪里来?

Firebase 数据库屏幕截图: enter image description here

最佳答案

您应该首先将其作为字符串获取,然后解析为 URI。 URI 类不仅仅是 URL 字符串,这就是为什么您会收到无法转换错误的原因。数据库中有一个代表 URL 的字符串。

  public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
      String url = dataSnapshot.getValue(String.class);
      photoUrl=  Uri.parse( url );
      Log.d("PHOTOURL", photoUrl.toString());
 }

如果您想在 onDataChande 函数之外使用 photoUrl,您需要调用一个方法或在 onDataChange 中编写您的使用代码:

  public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
      String url = dataSnapshot.getValue(String.class);
      photoUrl=  Uri.parse( url );
      usePhotoUrl();
 }

然后在方法中使用它:

 public void usePhotoUrl(){
   //you can use phootUrl here
 }

关于android - 检索 Firebase 数据库中存储的 url 时,应用程序崩溃并给出错误 Can't conversion object of type java.lang.String to type android.net.Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975571/

相关文章:

android - 添加 android assembleRelease 依赖

Android Firebase 删除谷歌地图标记

swift - 从 Firebase 获取多级节点

android - Database.Logger.Level 枚举值在版本 11.0.0 中不可访问

ios - 如何只获取登录用户在 Firebase 中创建的对象?

android - 使用 ShapeDrawable 获取 textView 背景颜色

android - 运行时异常 : Unable to instantiate receiver android

android - 导出后未在 Honeycomb 上调用 BOOT_COMPLETED

android - 来自 FCM 服务器的特殊字符,用于 android Ex : Telugu 中的区域语言

javascript - Firebase Cloud功能使用paypal sdk后无法写入文档