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

Android环境下Firebase数据库Audit权限错误问题求助

排查Firebase数据读取无响应及SELinux AVC权限错误

你遇到的SELinux(安全增强型Linux)AVC权限拒绝错误和Firebase数据库规则本身无关——从日志来看,报错进程是系统级的smdexe(高通调制解调器相关进程)、print,并非你的应用进程,这是系统层面的权限限制,和你读取Firebase数据的操作没有直接因果关系。点击按钮无响应的真实原因需要从以下方向排查:

1. 分离错误关联性,定位真实问题

  • 先过滤LogCat中你的App进程日志(通过包名筛选),找到FirebaseDatabase、DatabaseReference相关的日志,这才是直接关联你操作的错误信息。
  • 检查代码逻辑是否正确:
    • 确保读取路径和Firebase规则匹配:当你为User节点设置权限后,读取代码必须指向/User路径,而非根节点。示例代码:
      // 正确指向User节点
      DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("User");
      userRef.addValueEventListener(new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
              // 处理读取到的数据
          }
          @Override
          public void onCancelled(DatabaseError databaseError) {
              // 打印Firebase操作的真实错误
              Log.e("FirebaseError", databaseError.getMessage());
          }
      });
      
    • 确认未遗漏回调监听:如果只调用了get()而未添加监听,或未处理onCancelled回调,会导致无响应且看不到错误。

2. 检查App基础配置

  • 确认AndroidManifest.xml中已添加网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 验证Firebase配置:检查google-services.json是否正确放置在app/目录下,且Firebase控制台中App的包名、SHA-1指纹和本地项目匹配。

3. 处理系统级SELinux AVC错误(可选)

你的设备是三星SM-J200H(Android 5.1.1),SELinux处于强制模式(日志中permissive=0)。这类系统进程的AVC错误属于固件bug,普通用户无法直接修复,若该错误确实影响到App运行,可尝试:

  • 临时将SELinux设置为宽容模式(需Root权限):
    su
    setenforce 0
    
    注意:宽容模式会降低系统安全性,仅作为临时排查手段,不建议长期使用。

内容的提问来源于stack exchange,提问作者Dmytro Parkhomenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:00:31