You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从Firebase实时数据库获取用户UID下的filename与fileurl,求修正

问题解决方案

一、修正FirebaseRecycler查询,获取当前用户UID下的数据

你当前的查询直接指向Users节点,会加载所有用户的数据。要获取当前登录用户UID下的filename和fileurl,需要先定位到该用户的专属节点,修改后的代码如下:

// 获取当前登录用户的UID(需确保用户已完成登录)
String currentUserId = FirebaseAuth.getInstance().getCurrentUser().getUid();

// 构建指向当前用户节点的查询
FirebaseRecyclerOptions<model> options =
        new FirebaseRecyclerOptions.Builder<model>()
                .setQuery(FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserId), model.class)
                .build();

adapter = new myadapter(options);
recview.setAdapter(adapter);

注意事项:

  • 必须先判断用户登录状态,避免getCurrentUser()返回空指针
  • 数据库中用户节点下的字段名(如filename、后续添加的fileurl)要和model类的字段名完全匹配(大小写一致)

二、Manifest文件检查

你的Manifest存在以下几个需要修正的点:

  1. 权限适配问题:

    • Android 13及以上版本中,READ_EXTERNAL_STORAGE已被废弃,如需读取媒体文件,需使用细分权限如READ_MEDIA_IMAGES;如果是读取PDF等文档,Android 13+无需额外权限,直接通过存储访问框架即可
    • 低版本兼容需保留READ_EXTERNAL_STORAGE并添加版本限制
  2. Activity的exported属性缺失:

    • .OTPActivity、.PhoneAuthentication未设置android:exported属性,在Android 12及以上系统会导致安装失败,需补充设置为android:exported="false"(这两个页面不是对外入口)
  3. 冗余的intent-filter:

    • .MainActivity中的<action android:name="android.intent.action.MAIN" />配置无意义(没有搭配LAUNCHER category),建议移除

修正后的Manifest关键片段:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Android 13+ 媒体读取权限,按需添加 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" android:minSdkVersion="33" />
<!-- 低版本兼容读取权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

<application
    ...>
    <!-- 补充exported属性 -->
    <activity
        android:name=".OTPActivity"
        android:exported="false"
        android:windowSoftInputMode="adjustResize"
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>
    <activity
        android:name=".PhoneAuthentication"
        android:exported="false"
        android:windowSoftInputMode="adjustResize"
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"/>
    
    <!-- 移除冗余intent-filter -->
    <activity
        android:name=".MainActivity"
        android:exported="true">
    </activity>
    ...
</application>

三、Model类确认

你的model类完全符合Firebase实时数据库的序列化要求:

  • 包含无参构造函数
  • 字段名与数据库字段匹配
  • 提供了对应的getter/setter方法
    后续数据库添加fileurl字段后,无需修改Model类,直接使用即可

内容的提问来源于stack exchange,提问作者Unique Idea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:25:22