2017-09-13 5 views
1

나는 안드로이드 앱 개발에 새로운 질문이있다. 여기 Firebase 실시간 데이터베이스

내 MainActivity.java

package com.koridevbrowser.app; 

import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
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; 


public class MainActivity extends AppCompatActivity implement ValueEventListener{ 

private TextView mText; 
private WebView mWebView; 
ProgressBar progressBar; 
private Toolbar toolbar; 


private DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
private DatabaseReference mconf = database.child("version"); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toolbar = (Toolbar) findViewById(R.id.app_bar); 
    setSupportActionBar(toolbar); 

    mText = (TextView) findViewById(R.id.About); 

    mWebView = (WebView) findViewById(R.id.activity_main_webview); 

    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

    String userAgent = mWebView.getSettings().getUserAgentString(); 
    mWebView.getSettings().setUserAgentString(userAgent); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.kori-developer.com"); 
    mWebView.setWebChromeClient(new WebChromeClient()); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(final MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.home: 
      mWebView.loadUrl("http://kori-developer.com/"); 
      return true; 
     case R.id.KoriFiles: 
      mWebView.loadUrl("http://kori-developer.com/forum/11-koridev-releases/"); 
      return true; 
     case R.id.KoriRules: 
      mWebView.loadUrl("http://kori-developer.com/forum/26-foren-regeln/"); 
      return true; 
     case R.id.KoriDonate: 
      mWebView.loadUrl("http://kori-developer.com/store/"); 
      return true; 
     case R.id.KoriContact: 
      mWebView.loadUrl("http://kori-developer.com/contact/"); 
      return true; 
     case R.id.KoriAbout: 
      Toast.makeText(MainActivity.this, "Version: 0.3b", Toast.LENGTH_LONG).show(); 

      return true; 
     default: 
      return super.onOptionsItemSelected(item); 


    } 
} 

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    if (dataSnapshot.getValue(String.class) !=null) { 
     String value = dataSnapshot.getKey(); 
     if(value.equals("version")) { 
      String text = dataSnapshot.getValue(String.class); 
      mText.setText(text); 
     } 
    } 

} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

} 


private class HelloWebViewClient extends WebViewClient{ 


    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView webView, String url) 
    { 
     webView.loadUrl(url); 
     return true; 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 

     progressBar.setVisibility(view.GONE); 
    } 

} 


@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { //if back key is pressed 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return true; 

    } 

    return super.onKeyDown(keyCode, event); 

} 

public void onBackPressed() { 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      MainActivity.this); 

    // set title 
    alertDialogBuilder.setTitle("Exit"); 

    // set dialog message 
    alertDialogBuilder 
      .setMessage("Do you really want to exit KoriDev?") 
      .setCancelable(false) 
      .setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, close 
        // current activity 
        MainActivity.this.finish(); 
       } 
      }) 
      .setNegativeButton("No",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, just close 
        // the dialog box and do nothing 
        dialog.cancel(); 
       } 
      }); 

    // create alert dialog 
    AlertDialog alertDialog = alertDialogBuilder.create(); 

    // show it 
    alertDialog.show(); 

} 

}입니다

내가 여기에 실시간 데이터베이스의 버전을 읽으려고합니다

case R.id.KoriAbout: 
      Toast.makeText(MainActivity.this, "Version: 0.3b", Toast.LENGTH_LONG).show(); 

을하지만 방법을 모르는 Firebase의 Realtime Database로 설정하십시오.

내 데이터베이스에서 사진 : 기본적으로

enter image description here

답변

1

의 실시간 ... 저는 믿습니다. firebase에서 변경하면 앱에서 변경됩니다. 하지만, 가지고있는 것을 위해, 당신은 그것을 당신의 건배에 하드 코딩했습니다.

당신은 같은 것을 할 필요가 : 여기

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference("version"); 

// Read from the database 
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. 
     String value = dataSnapshot.getValue(String.class); 
     Log.d(TAG, "Value is: " + value); 
    } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
     Log.w(TAG, "Failed to read value.", error.toException()); 
    } 
}); 

체크 아웃 그들의 문서 : https://firebase.google.com/docs/database/android/start/

+0

이 IST 권리를. 토스트에서 데이터베이스 값을 내 프로 플램으로 출력합니다 –

+0

@DroiDev –

+0

변수에 버전 값을 저장하고 토스트 내에서 해당 문자열을 사용해야합니다. 규칙을 반드시 지켜야합니다. 데이터를 읽을 수 있습니다. – DroiDev

관련 문제