質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

586閲覧

android studio java realtime database firebase

sasasakkkk

総合スコア14

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/11/04 02:40

ただいまAndroid Studioでアプリ作成を行っております。

firebaseのrealtime databaseを用いてログイン画面、会員登録画面を
作成中です。

ID、フルネーム、パスワードを入力し、
新規アカウント作成まで行うことはできました。
しかし、databaseに新規で情報が入力されません。

原因がよくわからなく、解決できない状態です。
ご教授よろしくお願いいたします。

RegisterActivity

Java

1public class RegisterActivity extends AppCompatActivity{ 2 3 private static final String TAG = "RegisterActivity"; 4 5 //firebase 6 private FirebaseAuth mAuth; 7 private FirebaseMethods firebaseMethods; 8 private FirebaseDatabase mFirebaseDatabase; 9 private DatabaseReference myRef; 10 11 private String append=""; 12 13 private Context mContext; 14 private ProgressBar mProgressBar; 15 private EditText mEmail, mPassword,mUsername; 16 private TextView mPleaseWait; 17 private TextView loadingPleaseWait; 18 private Button btnRegister; 19 private String username,email,password; 20 21 @Override 22 protected void onCreate(@Nullable Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_register); 25 btnRegister = findViewById(R.id.btn_register); 26 mContext=RegisterActivity.this; 27 firebaseMethods = new FirebaseMethods(mContext); 28 Log.d(TAG, "onCreate: started"); 29 30 initWidgets(); 31 32 setUpFirebaseAuth(); 33 34 init(); 35 } 36 37 private void init(){ 38 btnRegister.setOnClickListener(new View.OnClickListener() { 39 @Override 40 public void onClick(View v) { 41 email=mEmail.getText().toString(); 42 username=mUsername.getText().toString(); 43 password=mPassword.getText().toString(); 44 45 if(checkInputs(email,username,password)){ 46 mProgressBar.setVisibility(View.VISIBLE); 47 loadingPleaseWait.setVisibility(View.VISIBLE); 48 49 firebaseMethods.registerNewEmail(email,password,username); 50 Log.d(TAG, "登録完了"); 51 52 53 } 54 } 55 }); 56 } 57 private boolean checkInputs(String email,String username,String password){ 58 Log.d(TAG, "checkInputs: checking inputs for null values"); 59 if(email.equals("")||username.equals("")||password.equals("")){ 60 Toast.makeText(mContext,"フォームを記入してください",Toast.LENGTH_LONG).show(); 61 62 return false; 63 } 64 return true; 65 } 66 67 private void initWidgets(){ 68 Log.d(TAG, "initWidgets: Initializing Widgets"); 69 mUsername=findViewById(R.id.username); 70 mEmail = findViewById(R.id.input_email); 71 mProgressBar = findViewById(R.id.progressBar); 72 loadingPleaseWait = findViewById(R.id.loadingPleaseWait); 73 mPassword=findViewById(R.id.input_password); 74 mContext=RegisterActivity.this; 75 mProgressBar.setVisibility(View.GONE); 76 loadingPleaseWait.setVisibility(View.GONE); 77 78 } 79 80 81 //Firebase 82 private void setUpFirebaseAuth(){ 83 Log.d(TAG, "setUpFirebaseAuth: setting up firebase auth"); 84 85 mAuth = FirebaseAuth.getInstance(); 86 mFirebaseDatabase =FirebaseDatabase.getInstance(); 87 myRef=mFirebaseDatabase.getReference("message"); 88 89 myRef.setValue("Hello, World!"); 90 } 91 @Override 92 public void onStart() { 93 super.onStart(); 94 Log.d(TAG, "onStart: "); 95 // Check if user is signed in (non-null) and update UI accordingly. 96 FirebaseUser currentUser = mAuth.getCurrentUser(); 97 updateUI(currentUser); 98 } 99 100 private void updateUI(final FirebaseUser user) { 101 102 if (user != null) { 103 104 Toast.makeText(RegisterActivity.this, "会員登録成功.", 105 Toast.LENGTH_LONG).show(); 106 //value イベントのリスナーを追加 107 myRef.addListenerForSingleValueEvent(new ValueEventListener() { 108 @Override 109 //パスのコンテンツ全体に対する変更の読み取りとリッスンを行います。 110 public void onDataChange(@NonNull DataSnapshot dataSnapshot) { 111 //1st check make sure the username is not already in use 112 if(firebaseMethods.checkIfUsernameExists(username,dataSnapshot)){ 113 append = myRef.push().getKey().substring(3,10); 114 Log.d(TAG, "onDataChange: username already exists.Appending random string to name:"+append); 115 } 116 117 118 username = append; 119 120 //add new user to the database 121 firebaseMethods.addNewUser(email,username,"","",""); 122 123 Log.d(TAG, "Signup succesful. Sending verification email."); 124 //Toast.makeText(mContext,"Signup succesful. Sending verification email.",Toast.LENGTH_LONG).show(); 125 //add new user_account_settings to the database 126 } 127 128 @Override 129 public void onCancelled(@NonNull DatabaseError databaseError) { 130 131 } 132 }); 133 134 } else { 135 Toast.makeText(RegisterActivity.this, "会員登録失敗.", 136 Toast.LENGTH_LONG).show(); 137 } 138 139 } 140} 141

FirebaseMethods

java

1public class FirebaseMethods { 2 private static final String TAG = "FirebaseMethods"; 3 4 //firebase 5 private FirebaseAuth mAuth; 6 private String userID; 7 private FirebaseDatabase mFirebaseDatabase; 8 private DatabaseReference myRef; 9 private Context mContext; 10 11 12 public FirebaseMethods(Context context){ 13 mAuth=FirebaseAuth.getInstance(); 14 mContext = context; 15 mFirebaseDatabase=FirebaseDatabase.getInstance(); 16 myRef=mFirebaseDatabase.getReference(); 17 mContext=context; 18 19 if(mAuth.getCurrentUser()!=null){ 20 userID=mAuth.getCurrentUser().getUid(); 21 Log.d(TAG, "FirebaseMethods: "+userID); 22 } 23 24 } 25 26 public boolean checkIfUsernameExists(String username, DataSnapshot dataSnapshot){ 27 Log.d(TAG, "checkIfUsernameExists: checking if"+username+"already exists."); 28 29 User user = new User(); 30 31 for (DataSnapshot ds:dataSnapshot.child(userID).getChildren()){ 32 Log.d(TAG, "checkIfUsernameExists: datasnapshot:"+ds); 33 34 user.setUsername(ds.getValue(User.class).getUsername()); 35 Log.d(TAG, "checkIfUsernameExists: username:"+user.getUsername()); 36 37 if (StringManipulation.expandUsername(user.getUsername()).equals(username)){ 38 Log.d(TAG, "checkIfUsernameExists: FOUND A MATCH" + user.getUsername()); 39 return true; 40 } 41 42 } 43 return false; 44 45 } 46 public void registerNewEmail(final String email,String password,final String username){ 47 mAuth.createUserWithEmailAndPassword(email, password) 48 .addOnCompleteListener(new OnCompleteListener<AuthResult>() { 49 @Override 50 public void onComplete(@NonNull Task<AuthResult> task) { 51 if (task.isSuccessful()) { 52 // Sign in success, update UI with the signed-in user's information 53 Log.d(TAG, "createUserWithEmail:success"); 54 FirebaseUser user = mAuth.getCurrentUser(); 55 updateUI(user); 56 } else { 57 // If sign in fails, display a message to the user. 58 Log.w(TAG, "createUserWithEmail:failure", task.getException()); 59 Toast.makeText(mContext, "Authentication failed.", 60 Toast.LENGTH_SHORT).show(); 61 updateUI(null); 62 } 63 64 // ... 65 } 66 }); 67 } 68 private void updateUI(FirebaseUser user) { 69 70 if (user != null) { 71 72 Toast.makeText(mContext, "会員登録成功.", 73 Toast.LENGTH_LONG).show(); 74 75 } else { 76 Toast.makeText(mContext, "会員登録失敗.", 77 Toast.LENGTH_LONG).show(); 78 } 79 80 } 81 82 public void addNewUser(String email,String username,String description,String website,String profile_photo){ 83 84 User user = new User(userID,1,email,StringManipulation.condenseUsername((username)) ); 85 86 myRef.child(mContext.getString(R.string.dbname_users)) 87 .child(userID) 88 .setValue(user); 89 90 UserAccountSettings settings = new UserAccountSettings( 91 description, 92 username, 93 0, 94 0, 95 0, 96 profile_photo, 97 username, 98 website 99 100 ); 101 myRef.child(mContext.getString(R.string.dbname_users)) 102 .child(userID) 103 .setValue(settings); 104 } 105 106 107} 108

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ルールをTrueにしたら ReadとWriteができるようになりました

投稿2019/11/06 11:32

sasasakkkk

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問