java - android google firebase upload photo with login situation -


i learning use google firebase android apps , know how build database , let user write new post,(but words only).

on other hand,i know how post photo without situation of user login.

if want post photo user login situation,the apps run wrong....

i don't know what's wrong in it.....

thanks lots kindly help!

   if(!textutils.isempty(title) && !textutils.isempty(body) && imageuri != null){              progressdialog.show();              storagereference filepath = storagereference.child("blog_images").child(imageuri.getlastpathsegment());                filepath.putfile(imageuri).addonsuccesslistener(new onsuccesslistener<uploadtask.tasksnapshot>() {                  @override                  public void onsuccess(uploadtask.tasksnapshot tasksnapshot) {                      uri downloadurl = tasksnapshot.getdownloadurl();                        databasereference post = mdatabase.push();                      post.child("image").setvalue(downloadurl.tostring());                        progressdialog.dismiss();                     // startactivity(new intent(newpostactivity.this,mainactivity.class));                  }              });          }          // disable button there no multi-posts          seteditingenabled(false);          toast.maketext(this, "正在為您刊登中...", toast.length_short).show();            // [start single_value_read]          final string userid = getuid();          mdatabase.child("users").child(userid).addlistenerforsinglevalueevent(                  new valueeventlistener() {                      @override                      public void ondatachange(datasnapshot datasnapshot) {                          // user value                          user user = datasnapshot.getvalue(user.class);                            // [start_exclude]                          if (user == null) {                              // user null, error out                              log.e(tag, "user " + userid + " unexpectedly null");                              toast.maketext(newpostactivity.this,                                      "error: not fetch user.",                                      toast.length_short).show();                          } else {                              // write new post                              writenewpost(userid, user.username,date, title, body, money, time, special);                          }

and there full code below:

package com.google.firebase.quickstart.database;    import android.app.progressdialog;  import android.content.intent;  import android.graphics.bitmap;  import android.net.uri;  import android.os.bundle;  import android.provider.mediastore;  import android.support.design.widget.floatingactionbutton;  import android.text.textutils;  import android.util.log;  import android.view.view;  import android.widget.button;  import android.widget.imageview;  import android.widget.textview;  import android.widget.toast;    import com.google.android.gms.tasks.onsuccesslistener;  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 com.google.firebase.quickstart.database.models.post;  import com.google.firebase.quickstart.database.models.user;  import com.google.firebase.storage.firebasestorage;  import com.google.firebase.storage.storagereference;  import com.google.firebase.storage.uploadtask;    import java.io.ioexception;  import java.util.calendar;  import java.util.hashmap;  import java.util.map;    public class newpostactivity extends baseactivity {        private static final string tag = "newpostactivity";      private static final string required = "required";      private static final int pick_image_request = 234;          // [start declare_database_ref]      private databasereference mdatabase;      private storagereference riversref;      private storagereference storagereference;      // [end declare_database_ref]      //imageview      private imageview imageview;        //a uri object store file path      private uri imageuri=null;      private uri filepath;        private textview mdate;      private textview mtitlefield;      private textview mbodyfield;      private textview mplace;      private textview mchild;      private textview mforms;      private textview meng;      private textview mmoney;      private textview mtime;      private textview mspecial;      private progressdialog progressdialog;      private floatingactionbutton msubmitbutton;      private button mbutton;      private button mbutton2;        private int yy;      private int mm;      private int dd;        @override      protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          setcontentview(r.layout.activity_new_post);            // [start initialize_database_ref]          mdatabase = firebasedatabase.getinstance().getreference();          // [end initialize_database_ref]          storagereference  = firebasestorage.getinstance().getreference();  //更改(2)          mdate = (textview) findviewbyid(r.id.post_date);          mtitlefield = (textview) findviewbyid(r.id.field_title);          mbodyfield = (textview) findviewbyid(r.id.field_body);          mmoney = (textview) findviewbyid(r.id.input_money);          mtime = (textview) findviewbyid(r.id.input_time);          mspecial = (textview) findviewbyid(r.id.input_special);            imageview = (imageview) findviewbyid(r.id.upload);          mbutton = (button) findviewbyid(r.id.button_camera);          mbutton.setonclicklistener(new view.onclicklistener() {              @override              public void onclick(view v) {                  upload();              }          });          mbutton2 = (button) findviewbyid(r.id.button_download);          mbutton2.setonclicklistener(new view.onclicklistener() {              @override              public void onclick(view v) {                  upload();            }          });          msubmitbutton = (floatingactionbutton) findviewbyid(r.id.fab_submit_post);          msubmitbutton.setonclicklistener(new view.onclicklistener() {              @override              public void onclick(view v) {                  submitpost();              }          });      }        private void upload() {          intent intent = new intent();          intent.settype("image/*");          intent.setaction(intent.action_get_content);          startactivityforresult(intent.createchooser(intent, "select picture"), pick_image_request);        }        //handling image chooser activity result      @override      protected void onactivityresult(int requestcode, int resultcode, intent data) {          super.onactivityresult(requestcode, resultcode, data);          if (requestcode == pick_image_request && resultcode == result_ok && data != null && data.getdata() != null) {              imageuri = data.getdata();              try {                  bitmap bitmap = mediastore.images.media.getbitmap(getcontentresolver(), imageuri);                  imageview.setimagebitmap(bitmap);                } catch (ioexception e) {                  e.printstacktrace();              }          }      }          private void submitpost() {          //更改(1)            final calendar c = calendar.getinstance();          yy = c.get(calendar.year);          mm = c.get(calendar.month);          dd = c.get(calendar.day_of_month);          mdate.settext(new stringbuilder()                  // month 0 based, add 1                  .append(yy).append(" ").append("-").append(mm + 1).append("-")                  .append(dd));          final string date = mdate.gettext().tostring();            final string title = mtitlefield.gettext().tostring();          final string body = mbodyfield.gettext().tostring();          final string money = mmoney.gettext().tostring();          final string time = mtime.gettext().tostring();          final string special = mspecial.gettext().tostring();              // title required          if (textutils.isempty(title)) {              mtitlefield.seterror(required);              return;          }            // body required          if (textutils.isempty(body)) {              mbodyfield.seterror(required);              return;          }            if (textutils.isempty(money)) {              mmoney.seterror(required);              return;          }          if (textutils.isempty(time)) {              mtime.seterror(required);              return;          }          if (textutils.isempty(special)) {              mspecial.seterror(required);              return;          }            if(!textutils.isempty(title) && !textutils.isempty(body) && imageuri != null){              progressdialog.show();              storagereference filepath = storagereference.child("blog_images").child(imageuri.getlastpathsegment());                filepath.putfile(imageuri).addonsuccesslistener(new onsuccesslistener<uploadtask.tasksnapshot>() {                  @override                  public void onsuccess(uploadtask.tasksnapshot tasksnapshot) {                      uri downloadurl = tasksnapshot.getdownloadurl();                        databasereference post = mdatabase.push();                      post.child("image").setvalue(downloadurl.tostring());                        progressdialog.dismiss();                     // startactivity(new intent(newpostactivity.this,mainactivity.class));                  }              });          }          // disable button there no multi-posts          seteditingenabled(false);          toast.maketext(this, "正在為您刊登中...", toast.length_short).show();            // [start single_value_read]          final string userid = getuid();          mdatabase.child("users").child(userid).addlistenerforsinglevalueevent(                  new valueeventlistener() {                      @override                      public void ondatachange(datasnapshot datasnapshot) {                          // user value                          user user = datasnapshot.getvalue(user.class);                            // [start_exclude]                          if (user == null) {                              // user null, error out                              log.e(tag, "user " + userid + " unexpectedly null");                              toast.maketext(newpostactivity.this,                                      "error: not fetch user.",                                      toast.length_short).show();                          } else {                              // write new post                              writenewpost(userid, user.username,date, title, body, money, time, special);                          }                            // finish activity, stream                          seteditingenabled(true);                          finish();                          // [end_exclude]                      }                        @override                      public void oncancelled(databaseerror databaseerror) {                          log.w(tag, "getuser:oncancelled", databaseerror.toexception());                          // [start_exclude]                          seteditingenabled(true);                          // [end_exclude]                      }                  });          // [end single_value_read]      }        private void seteditingenabled(boolean enabled) {          mtitlefield.setenabled(enabled);          mbodyfield.setenabled(enabled);          if (enabled) {              msubmitbutton.setvisibility(view.visible);          } else {              msubmitbutton.setvisibility(view.gone);          }      }        // [start write_fan_out]      private void writenewpost(string userid, string username, string date, string title, string body,  string money, string time, string special) {          // create new post @ /user-posts/$userid/$postid , @          // /posts/$postid simultaneously          string key = mdatabase.child("posts").push().getkey();          post post = new post(userid, username, date, title, body, money, time, special); //受到post.java的參數所影響          map<string, object> postvalues = post.tomap();            map<string, object> childupdates = new hashmap<>();          childupdates.put("/posts/" + key, postvalues);          childupdates.put("/user-posts/" + userid + "/" + key, postvalues);            mdatabase.updatechildren(childupdates);      }      // [end write_fan_out]  }


Comments

Popular posts from this blog

How to understand 2 main() functions after using uftrace to profile the C++ program? -

c# - Update a combobox from a presenter (MVP) -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -