com.google.firebase.database.databaseexception:firebase数据库错误:权限被拒绝

时间:2017-10-15 17:52:44

标签: android firebase firebase-realtime-database

我从firebase检索数据库中的数据。和shoscription herew up这个错误任何人都可以帮助我吗?这是我的mainactivity.java:

package com.example.infamouslegend.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    FirebaseDatabase database;
    DatabaseReference myRef ;
    List<FireModel> list;
    RecyclerView recycle;
    Button view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view = (Button) findViewById(R.id.view);
        recycle = (RecyclerView) findViewById(R.id.recycle);
        database = FirebaseDatabase.getInstance();
        myRef = database.getReference("Complaints");

        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.

                list = new ArrayList<FireModel>();
                for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren()){

                    FireModel value = dataSnapshot.getValue(FireModel.class);
                    FireModel fire = new FireModel();
                    String Description = value.getDescription();
                    String Date = value.getDate();
                    String MediaURL = value.getMediaURL();
                    fire.setDescription(Description);
                    fire.setDate(Date);
                    fire.setMediaURL(MediaURL);
                    list.add(fire);

                }

            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w("Hello", "Failed to read value.", error.toException());
                Toast.makeText(MainActivity.this, "Failed to read value !" + error.toException(), Toast.LENGTH_SHORT).show();
            }
        });


        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {




                RecyclerAdapter recyclerAdapter = new RecyclerAdapter(list,MainActivity.this);
                RecyclerView.LayoutManager recyce = new GridLayoutManager(MainActivity.this,2);
                /// RecyclerView.LayoutManager recyce = new LinearLayoutManager(MainActivity.this);
                // recycle.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true));
                recycle.setLayoutManager(recyce);
                recycle.setItemAnimator( new DefaultItemAnimator());
                recycle.setAdapter(recyclerAdapter);




            }
        });


    }
}

这是我的firemodel.java:

package com.example.infamouslegend.myapplication;

/**
 * Created by Infamous Legend on 10/15/2017.
 */

public class FireModel {

    public String Description;
    public String Date;
    public String MediaURL;


    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        this.Description = description;
    }

    public String getDate() {
        return Date;
    }

    public void setDate(String date) {
        this.Date = date;
    }

    public String getMediaURL() {
        return MediaURL;
    }

    public void setMediaURL(String MediaURL) {
        this.MediaURL = MediaURL;
    }
}

和我的recycleradapter.java:

package com.example.infamouslegend.myapplication;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.List;

/**
 * Created by Infamous Legend on 10/15/2017.
 */

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyHoder>{

    List<FireModel> list;
    Context context;

    public RecyclerAdapter(List<FireModel> list, Context context) {
        this.list = list;
        this.context = context;
    }



    @Override
    public MyHoder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(context).inflate(R.layout.card,parent,false);
        MyHoder myHoder = new MyHoder(view);


        return myHoder;
    }

    @Override
    public void onBindViewHolder(MyHoder holder, int position) {

        FireModel mylist = list.get(position);
        holder.Description.setText(mylist.getDescription());
        holder.Date.setText(mylist.getDate());
        //holder.MediaURL.setText(mylist.getMediaURL());
        //Picasso.with(context).load(MediaURL.get(position).getMediaURL()).resize(120, 60).into(MyHoder.MediaURL);

    }

    @Override
    public int getItemCount() {

        int arr = 0;

        try{
            if(list.size()==0){

                arr = 0;

            }
            else{

                arr=list.size();
            }



        }catch (Exception e){



        }

        return arr;

    }

    class MyHoder extends RecyclerView.ViewHolder{
        TextView Description,Date;
        //ImageView MediaURL;

        public MyHoder(View itemView) {
            super(itemView);
            Description = (TextView) itemView.findViewById(R.id.vname);
            Date= (TextView) itemView.findViewById(R.id.vemail);
            //MediaURL= (ImageView) itemView.findViewById(R.id.thumbnail);

        }
    }

}

任何人都可以帮助我吗?我试图通过cardview从firebase数据库检索数据到recyclerview。提前致谢

这是我的firebase实时数据库规则:

{
  "rules": {
    ".read": true,
    ".write":true
  }
}

1 个答案:

答案 0 :(得分:0)

如果您已将应用配置为正确连接firebase,我会重新下载google-service.json并替换为现有版本。 check this solution