Java 尝试使用Firebase实时数据库设置值()时,获取权限被拒绝错误
我正在使用firebase进行一个项目,希望在其中存储有关工作的基本信息。我创建了job对象,并按照我认为正确的步骤将其存储到数据库中,但我不断收到错误(特别是最后一行): 我试图写入数据库的java文件(AddFragment.java):Java 尝试使用Firebase实时数据库设置值()时,获取权限被拒绝错误,java,android,firebase,firebase-realtime-database,firebase-security,Java,Android,Firebase,Firebase Realtime Database,Firebase Security,我正在使用firebase进行一个项目,希望在其中存储有关工作的基本信息。我创建了job对象,并按照我认为正确的步骤将其存储到数据库中,但我不断收到错误(特别是最后一行): 我试图写入数据库的java文件(AddFragment.java): package com.example.android.portfolio; 导入android.os.Bundle; 导入android.view.LayoutInflater; 导入android.view.view; 导入android.view.V
package com.example.android.portfolio;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
导入androidx.annotation.NonNull;
导入androidx.annotation.Nullable;
导入androidx.fragment.app.fragment;
导入com.example.android.portfolio.helpers.Job;
导入com.example.android.portfolio.helpers.Validation;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
公共类AddFragment扩展了Fragment{
//数据库参考
数据库参考文献;
//创建验证对象
验证=新验证();
//创建要传递到数据库的作业对象
工作;
//组件对象创建
EditText editTextCompanyName;
EditText editTextJobName;
编辑文本编辑文本网站;
EditText editTextContactName;
编辑文本编辑文本联系人电子邮件;
编辑文本编辑文本应用程序链接;
旋转器下拉列表;
按钮D;
字符串[]项=新字符串[]{“一周”、“两周”、“一个月”、“从不”};
字符串companyName、jobName、网站、contactName、contactEmail、applicationLink;
int下拉选择;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u add,container,false);
editTextCompanyName=(EditText)view.findViewById(R.id.editTextCompanyName);
editTextJobName=(EditText)view.findViewById(R.id.editTextJobName);
editTextWebsite=(EditText)view.findViewById(R.id.editTextWebsite);
editTextContactName=(EditText)view.findViewById(R.id.editTextContactName);
editTextContactEmail=(EditText)view.findViewById(R.id.editTextContactEmail);
editTextApplicationLink=(EditText)view.findViewById(R.id.editTextApplicationLink);
dropdown=(微调器)view.findViewById(R.id.spinnerId);
ButtonAd=(Button)view.findViewById(R.id.ButtonAd);
//创建微调器并使用上面的数组为其设置值。此处的警告针对可能的空值
ArrayAdapter=新的ArrayAdapter(this.getActivity(),android.R.layout.simple\u微调器\u下拉菜单\u项,项);
下拉列表.setAdapter(适配器);
ref=FirebaseDatabase.getInstance().getReference().child(“作业”);
ButtonAd.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//从GUI对象获取数据并将其放入变量中
companyName=editTextCompanyName.getText().toString().trim();
jobName=editTextJobName.getText().toString().trim();
website=editTextWebsite.getText().toString().trim();
contactName=editTextContactName.getText().toString().trim();
contactEmail=editTextContactEmail.getText().toString().trim();
applicationLink=editTextApplicationLink.getText().toString().trim();
dropdownChoice=dropdown.getSelectedItemPosition();
//作业对象初始化
作业=新作业(公司名称、作业名称、网站、联系人名称、联系人电子邮件、应用程序链接、下拉选择);
//将值推送到数据库
参考push().setValue(作业);
makeText(AddFragment.this.getActivity(),“插入数据库的数据”,Toast.LENGTH\u LONG);
}
});
返回视图;
}
}
我的firebase设置中的当前规则:
到目前为止,我试图:
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 4
I/AssistStructure: Flattened final assist data: 4736 bytes, containing 1 windows, 25 views
V/FA: Inactivity, disconnecting from the service
D/CompatibilityChangeReporter: Compat change id reported: 147798919; UID 10151; state: DISABLED
W/RepoOperation: setValue at /Job/-MEVMjcPp1ryvkEUQ4Fx failed: DatabaseError: Permission denied
package com.example.android.portfolio;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.android.portfolio.helpers.Job;
import com.example.android.portfolio.helpers.Validation;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class AddFragment extends Fragment {
//Database Reference
DatabaseReference ref;
//Create validation object
Validation validation = new Validation();
//Create Job object to pass into database
Job job;
//Component object creation
EditText editTextCompanyName;
EditText editTextJobName;
EditText editTextWebsite;
EditText editTextContactName;
EditText editTextContactEmail;
EditText editTextApplicationLink;
Spinner dropdown;
Button buttonAdd;
String[] items = new String[]{"One Week", "Two Weeks", "One Month", "Never"};
String companyName, jobName, website, contactName, contactEmail, applicationLink;
int dropdownChoice;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add, container, false);
editTextCompanyName = (EditText) view.findViewById(R.id.editTextCompanyName);
editTextJobName = (EditText) view.findViewById(R.id.editTextJobName);
editTextWebsite = (EditText) view.findViewById(R.id.editTextWebsite);
editTextContactName = (EditText) view.findViewById(R.id.editTextContactName);
editTextContactEmail = (EditText) view.findViewById(R.id.editTextContactEmail);
editTextApplicationLink = (EditText) view.findViewById(R.id.editTextApplicationLink);
dropdown = (Spinner) view.findViewById(R.id.spinnerRemind);
buttonAdd = (Button) view.findViewById(R.id.buttonAdd);
//Create the spinner and set values to it using the above array. Warnings here are for possible null values
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_dropdown_item, items);
dropdown.setAdapter(adapter);
ref = FirebaseDatabase.getInstance().getReference().child("Job");
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Get data from GUI objects and put it into variables
companyName = editTextCompanyName.getText().toString().trim();
jobName = editTextJobName.getText().toString().trim();
website = editTextWebsite.getText().toString().trim();
contactName = editTextContactName.getText().toString().trim();
contactEmail = editTextContactEmail.getText().toString().trim();
applicationLink = editTextApplicationLink.getText().toString().trim();
dropdownChoice = dropdown.getSelectedItemPosition();
//Job object initialization
job = new Job(companyName, jobName, website, contactName, contactEmail, applicationLink, dropdownChoice);
//Push values to database
ref.push().setValue(job);
Toast.makeText(AddFragment.this.getActivity(), "Data inserted to database", Toast.LENGTH_LONG);
}
});
return view;
}
}