>source

등록 code

//학생 데이터 삽입에 사용되는 code 이 질문은 그 당시에 제출되지 않았기 때문에 수입 부품을 추가하지 않습니다.

public class StudentregisterActivity extends AppCompatActivity {
    EditText stname;
    EditText stphone;
    EditText stemail;
    EditText stpassword;
    Button stbtn;
    DatabaseReference studentref;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.studentregister);
        stname=findViewById(R.id.editTextTextPersonName);
        stemail=findViewById(R.id.editTextTextEmailAddress);
        stphone=findViewById(R.id.editTextPhone);
        stpassword=findViewById(R.id.editTextTextPassword);
        stbtn=findViewById(R.id.button7);
        studentref=FirebaseDatabase.getInstance().getReference().child("Students");
        stbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                InsertStudentData();
            }
        });
    }
    private void InsertStudentData(){
        String name=stname.getText().toString();
        String email=stemail.getText().toString();
        String phone=stphone.getText().toString();
        String password=stpassword.getText().toString();
        Students students=new Students(name,email,phone,password);
        studentref.push().setValue(students);
        Toast.makeText(StudentregisterActivity.this,"Register Successfully",Toast.LENGTH_SHORT).show();
    }
}

학생

package com.example.pariksha;
public class Students {
    String name;
    String email;
    String phone;
    String password;
    public Students(String name, String email, String phone, String password) {
        this.name= name;
        this.email= email;
        this.phone= phone;
        this.password= password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name= name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email= email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone= phone;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password= password;
    }
}

설정-gradle

//프로젝트의 Gradle 설정

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        google()
        mavenCentral()
        jcenter()
        maven { url "https://maven.xyz.com" }
    }
}
rootProject.name= "Pariksha"
include ':app'

gradle 속성

//프로젝트의 Gradle 속성

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
android.useAndroidX=true
android.enableJetifier=true

gradle 빌드 앱

//앱의 Gradle 속성

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.gms.google-services'
}
android {
    compileSdk 31
    defaultConfig {
        applicationId "com.example.pariksha"
        minSdk 19
        targetSdk 31
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget= '1.8'
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //noinspection GradleCompatible
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.firebase:firebase-auth:19.2.0'
    implementation 'com.google.firebase:firebase-database:19.2.1'
    implementation 'com.google.firebase:firebase-database:20.0.3'
    implementation platform('com.google.firebase:firebase-bom:29.0.3')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-analytics:20.0.2'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
}

Gradle 프로젝트 빌드

//Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.4"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0"
        classpath 'com.google.gms:google-services:4.3.10'
        //NOTE: Do not place your application dependencies here; they belong
        //in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        //Check that you have the following line (if not, add it):
        google()  //Google's Maven repository
        mavenCentral()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

모든 사람이 읽고 쓸 수 있도록 Firebase 실시간 데이터베이스에 대한 규칙을 변경했습니까?

Ali Ahmed2022-01-07 17:03:11

예, Firebase 실시간 데이터베이스에서 읽기 및 쓰기를 허용하도록 규칙을 변경했습니다. 그러나 규칙이 모든 사람에게 변경되었는지 여부를 어떻게 알 수 있습니까?

Atrikesh Mishra2022-01-07 04:34:40
  • 답변 # 1

    우선 Firebase 실시간 데이터베이스에 대해 정의된 규칙을 살펴보십시오. Firebase 인증을 사용하지 않는 경우 다음과 같이 규칙을 업데이트할 수 있습니다.

    실시간 데이터베이스로 이동한 다음 탭을 규칙으로 변경하고 규칙을 업데이트합니다.

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

    그러면 데이터를 쓸 수 있습니다.

    private void InsertStudentData(){
        String name=stname.getText().toString();
        String email=stemail.getText().toString();
        String phone=stphone.getText().toString();
        String password=stpassword.getText().toString();
        Students students=new Students(name,email,phone,password);
        studentref.setValue(students).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                 Toast.makeText(StudentregisterActivity.this,"Register Successfully",Toast.LENGTH_SHORT).show();
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(StudentregisterActivity.this,"Register failed",Toast.LENGTH_SHORT).show();
            }
        });
    }
    

    하나 더.. 여러 종속성을 사용하고 있습니다. 변경하십시오.

    implementation 'com.google.firebase:firebase-auth:19.2.0'
    implementation 'com.google.firebase:firebase-database:19.2.1'
    implementation 'com.google.firebase:firebase-database:20.0.3'
    implementation platform('com.google.firebase:firebase-bom:29.0.3')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-analytics:20.0.2'
    

    까지

    implementation platform('com.google.firebase:firebase-bom:29.0.3')
    implementation 'com.google.firebase:firebase-auth'
    implementation 'com.google.firebase:firebase-database'
    implementation 'com.google.firebase:firebase-analytics'
    

    프로젝트에서 모든 변경을 수행했지만 여전히 데이터가 Firebase 실시간 데이터베이스에 삽입되지 않기 때문에 더 많은 정보가 필요합니다. 도와주세요

    Atrikesh Mishra2022-01-07 17:03:11

    어떤 토스트를 보여주고 있습니까? onSuccess 또는 onFailure 를 호출하고 있습니까?

    Ali Ahmed2022-01-07 04:19:51

    제출 버튼을 클릭하면 onSuccess도 onFailure도 화면에 텍스트가 표시되지 않습니다.

    Atrikesh Mishra2022-01-07 04:42:22

    Firebase에서 google-services.json 파일을 추가하셨습니까? 또한 답변에 추가한 대로 gradle-build 앱을 업데이트하십시오.

    Ali Ahmed2022-01-07 05:17:23

    예, 내 프로젝트의 google-service.json 파일도 올바른 경로에 추가했습니다. 좋아, 나는 gradle 빌드를 업데이트할 것이다

    Atrikesh Mishra2022-01-07 06:02:40
  • 답변 # 2

    다음 사항을 확인하세요.

    1. 매니페스트의 인터넷 권한
    2. Firebase 실시간 데이터베이스 규칙을 공개/비공개 규칙에 대한 사용자 인증으로 설정합니다.
    3. 데이터를 데이터베이스에 푸시하기 위한 테스트 장치의 인터넷 가용성

    인터넷 권한을 설정하려면

    <uses-permission android:name="android.permission.INTERNET" />

    규칙을 공개로 설정하려면

    1. Firebase 콘솔로 이동
    2. 실시간 데이터베이스 규칙
    3. 규칙에 이 code 붙여넣기

    **

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

    **

    마지막에 아래 code를 사용하여 데이터를 업로드해 보세요.

    DatabaseReference rootRef= FirebaseDatabase.getInstance().getReference();
    DatabaseReference tasksRef= rootRef.child("Students").push();
    Students students=new Students(name,email,phone,password);
    tasksRef.setValue(student);
    

    프로젝트에서 모든 변경을 수행했지만 여전히 데이터가 Firebase 실시간 데이터베이스에 삽입되지 않기 때문에 더 많은 정보가 필요합니다. 도와주세요

    Atrikesh Mishra2022-01-07 17:03:11
  • 이전 java : Assertj가 Jackson JsonNode와 작동하지 않음
  • 다음 Powershell: AD PC 결과를 CSV로 내보내는 방법