**What will I learn?** * Selecting image from gallery and displaying the selected image * Using firebase storage to add image * Adding image link in firebase database. **Requirement** * A PC/laptop with any Operating system such as Linux, Mac OSX, Windows OS * Preinstalled Android Studio, Android SDK and JDK *Note: This tutorial is performed in Android Studio on the laptop with Windows 10 Home, 64 bit OS* **Difficulty** Anybody with basic knowledge of Android can grasp the tutorial. **Tutorial Content** In our previous tutorial we learnt to register user to the firebase using firebase authentication using email/password and we also successfully added user’s data that is email, password in the firebase database. Now in this series we will be adding user profile picture in firebase storage and the link in the database so that we can easily access the user’s profile image in our chatting application. So let us begin. In order to add profile picture of user we must allow the user to select the picture first. So will will be passing the implicit intent to the gallery and user will select the desired picture. In order to achieve this let us open *activity_signup.xml* and add a ImageView their. ``` <ImageView android:id="@+id/show_user_profile" android:src="@drawable/ic_add_profile" android:layout_width="match_parent" android:layout_height="200dp" /> ``` When the user will press on this ImageView we will pass the implicit intent to the gallery of the user’s device and let the user select the desired image. After the user selects the image the selected image will be displayed in the imageview. In order to pass the implicit intent let us add click listener in the imageview ``` showUserProfile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); // Show only images, no videos or anything else intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); // Always show the chooser (if there are multiple options available) startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); } }); ``` This allows users to select the image from the gallery. Here we should also override *startActivityForResult()* method so that we can handle the event once the user picks the image ``` @Override public 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) { uri = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), uri); // Log.d(TAG, String.valueOf(bitmap)); Toast.makeText(this, "hey you selected image" + bitmap, Toast.LENGTH_SHORT).show(); showUserProfile.setImageBitmap(bitmap); //ImageView imageView = (ImageView) findViewById(R.id.imageView); //imageView.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } } } ``` Here, when the user picks up his/her desired image then this method is called and if the data is not null we will be receiving the data by data.getData(). This returns the uri of the image and we will then convert this image into bitmap so that we can display it in the ImageView. Let us run this application and see what happens. https://i.imgur.com/sqmNywK.png Here initially this screen pops up. Now if the user presses on the image then user will be navigated to select the image. https://i.imgur.com/MNJnfZj.png And finally if the user selects the image then the selected image will be displayed in the imageview along with the Toast message like this: https://i.imgur.com/JTW9nNt.png We successfully let our user select the image now we have to upload this particular image to firebase database if the user presses the signup button. In order to upload image to firebase storage we must initially convert our bitmap to byte array so that it will be easy for us to upload the image. ``` ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); byte[] data = bytes.toByteArray(); FirebaseStorage.getInstance().getReference().child("simpleChat").child(firebaseUser.getUid()) .child("profilePic") .putBytes(data) .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { } }); ``` Here we are getting the instance of FirebaseStorage and pushing our image in a folder named simpleChat followed by userId and the name of our image will be profilePic. onSuccessListener is called if the upload task is successful. We can get the image url simply by: ``` String url=taskSnapshot.getDownloadUrl().toString(); ``` After we get the profile picture url of user then only we will be uploading the user data in the server. We will now be creating our own user so that we can add yhe desired properties on user. If we pushed the fieebaseUser object to server then we will only have fixed no of attributes available. So let us create a new Java class and name it User.java ``` public class User { private String emailAddress; private String userId; private String profilePic; public User(String emailAddress, String userId, String profilePic) { this.emailAddress = emailAddress; this.userId = userId; this.profilePic = profilePic; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getProfilePic() { return profilePic; } public void setProfilePic(String profilePic) { this.profilePic = profilePic; } } ``` For now we will only be adding emailAddress, profilePic and userId as we will only require this three for now. Now finally we will add the user information to the firebase database by: ``` String url=taskSnapshot.getDownloadUrl().toString(); User user=new User(firebaseUser.getEmail(),firebaseUser.getUid(),url); FirebaseDatabase.getInstance().getReference().child("simpleChat").child("users") .child(firebaseUser.getUid()).setValue(user); ``` Here we are creating adding our own user we created to the firebase database. There are multiple ways of setting value in firebase database. We can simply push string value in the firebase database but the most simple and elegant way is to directly push our object. The final code of SignUpActivity looks like this: ``` public class SignupActivity extends AppCompatActivity { EditText emailEt,passwordEt; Button signUp; String email,password; FirebaseAuth auth; ImageView showUserProfile; private final Integer PICK_IMAGE_REQUEST=1; Bitmap bitmap; Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); initView(); defineView(); addCLicklistener(); } private void defineView(){ emailEt=findViewById(R.id.email_et); passwordEt=findViewById(R.id.password_et); signUp=findViewById(R.id.signup_btn); showUserProfile=findViewById(R.id.show_user_profile); } private void initView(){ auth=FirebaseAuth.getInstance(); } private boolean validate(){ boolean isValid=false; email=emailEt.getText().toString(); password=passwordEt.getText().toString(); if(TextUtils.isEmpty(email)) emailEt.setError("Required"); else if(TextUtils.isEmpty(password)) passwordEt.setError("Required"); else if(uri==null) Toast.makeText(this, "Please select the image", Toast.LENGTH_SHORT).show(); else isValid=true; return isValid; } private void addCLicklistener(){ signUp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(validate()) registerUserToDatabse(); } }); showUserProfile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); // Show only images, no videos or anything else intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); // Always show the chooser (if there are multiple options available) startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); } }); } private void registerUserToDatabse(){ auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { Toast.makeText(SignupActivity.this, "succesfully created user::email is:"+ task.getResult().getUser().getEmail(), Toast.LENGTH_SHORT).show(); addUserInDatabse(task.getResult().getUser()); } }); } private void addUserInDatabse(final FirebaseUser firebaseUser){ ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); byte[] data = bytes.toByteArray(); FirebaseStorage.getInstance().getReference().child("simpleChat").child(firebaseUser.getUid()) .child("profilePic") .putBytes(data) .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { String url=taskSnapshot.getDownloadUrl().toString(); User user=new User(firebaseUser.getEmail(),firebaseUser.getUid(),url); FirebaseDatabase.getInstance().getReference().child("simpleChat").child("users") .child(firebaseUser.getUid()).setValue(user); } }); } @Override public 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) { uri = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), uri); // Log.d(TAG, String.valueOf(bitmap)); Toast.makeText(this, "hey you selected image" + bitmap, Toast.LENGTH_SHORT).show(); showUserProfile.setImageBitmap(bitmap); //ImageView imageView = (ImageView) findViewById(R.id.imageView); //imageView.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } } } } ``` Now before running our app please clear the previous authenticated user and clear the database too as we have changed the structure of the database. Go to authentication tab and press on option menu and delete user https://i.imgur.com/on6btum.png Clear all the user. Similarly go on database tab and click on cross button https://i.imgur.com/IGgpNrZ.png After you press on the cross button you will be shown a popup and select delete button there: https://i.imgur.com/QV2nhGq.png Now as your database is cleared go to the storage tab and press on getStarted there https://i.imgur.com/S3TiVUh.png By this you are enabling you firebase Storage service. let us run the application: https://i.imgur.com/5P2KLrg.png Here we successfully created the user. Now let us view our database: https://i.imgur.com/bRJMPNX.png We successfully added user with his/her profile picture. Now we can get the profile picture simply by getting the link. Now let us view our storage Firebase stores every child in the form of folders. Here simpleChat is our main parent folder https://i.imgur.com/6dkbCCa.png Inside simpleChat folder we have created a new folder that is user_id so that we can identify each user’s picture https://i.imgur.com/GVBwD9P.png And finally we have named our image profilePic https://i.imgur.com/DUJ60En.png If we clicked the image then we can view our image https://i.imgur.com/48AMziY.png Hence here we successfully registered user and added his/her profile picture to the firebase. Now in next session we will be refining our view and also we will be allowing our user to login. All above codes are available in my Github. Click [here](https://github.com/programminghubb/Chatapp) to download. **Curriculam** [Using firebase Database to create a chat application in Android : Part I](https://utopian.io/utopian-io/@programminghub/using-firebase-database-to-create-a-chat-application-in-android-part-i) <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@programminghub/using-firebase-database-to-create-a-chat-application-in-android-part-ii">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>
author | programminghub | ||||||
---|---|---|---|---|---|---|---|
permlink | using-firebase-database-to-create-a-chat-application-in-android-part-ii | ||||||
category | utopian-io | ||||||
json_metadata | "{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":106021222,"name":"android-studio-poet","full_name":"android/android-studio-poet","html_url":"https://github.com/android/android-studio-poet","fork":false,"owner":{"login":"android"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","android","tutorial","chat-app","firebase"],"users":["drawable","Override","NonNull","programminghub"],"links":["https://github.com/programminghubb/Chatapp","https://utopian.io/utopian-io/@programminghub/using-firebase-database-to-create-a-chat-application-in-android-part-i"],"moderator":{"account":"cha0s0000","time":"2018-03-12T02:23:02.234Z","reviewed":true,"pending":false,"flagged":false},"questions":[{"question":"Is the project description formal?","answers":[{"value":"Yes it’s straight to the point","selected":true,"score":10},{"value":"Need more description ","selected":false,"score":5},{"value":"Not too descriptive","selected":false,"score":0}],"selected":0},{"question":"Is the language / grammar correct?","answers":[{"value":"Yes","selected":true,"score":20},{"value":"A few mistakes","selected":false,"score":10},{"value":"It's pretty bad","selected":false,"score":0}],"selected":0},{"question":"Was the template followed?","answers":[{"value":"Yes","selected":true,"score":10},{"value":"Partially","selected":false,"score":5},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is there information about the additional frameworks?","answers":[{"value":"Yes, everything is explained","selected":true,"score":5},{"value":"Yes, but not enough","selected":false,"score":3},{"value":"No details at all","selected":false,"score":0}],"selected":0},{"question":"Is there code in the tutorial?","answers":[{"value":"Yes, and it’s well explained","selected":true,"score":5},{"value":"Yes, but no explanation","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is the tutorial explains technical aspects well enough?","answers":[{"value":"Yes, it teaches how and why about technical aspects","selected":true,"score":5},{"value":"Yes, but it’s not good/enough","selected":false,"score":3},{"value":"No, it explains poorly","selected":false,"score":0}],"selected":0},{"question":"Is the tutorial general and dense enough?","answers":[{"value":"Yes, it’s general and dense","selected":true,"score":5},{"value":"Kinda, it might be more generalized","selected":false,"score":3},{"value":"No, it’s sliced unnecessarily to keep part number high","selected":false,"score":0}],"selected":0},{"question":"Is there an outline for the tutorial content at the beginning of the post","answers":[{"value":"Yes, there is a well prepared outline in “What will I learn?” or another outline section","selected":true,"score":5},{"value":"Yes, but there is no proper listing for every step of the tutorial or it’s not detailed enough","selected":false,"score":3},{"value":"No, there is no outline for the steps.","selected":false,"score":0}],"selected":0},{"question":"Is the visual content of good quality?","answers":[{"value":"Yes","selected":true,"score":5},{"value":"Yes, but bad quality","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is this a tutorial series?","answers":[{"value":"Yes","selected":true,"score":5},{"value":"Yes, but first part","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is the tutorial post structured?","answers":[{"value":"Yes","selected":true,"score":5},{"value":"Not so good","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0}],"score":89}" | ||||||
created | 2018-03-11 19:12:51 | ||||||
last_update | 2018-03-12 02:23:09 | ||||||
depth | 0 | ||||||
children | 2 | ||||||
last_payout | 2018-03-18 19:12:51 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 42.398 HBD | ||||||
curator_payout_value | 17.817 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 13,819 | ||||||
author_reputation | 6,190,820,765,528 | ||||||
root_title | "Using Firebase Database to create a chat application in Android : Part II" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 43,761,944 | ||||||
net_rshares | 22,836,842,867,244 | ||||||
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
onealfa | 0 | 5,865,441,115 | 0.8% | ||
eric-boucher | 0 | 170,641,972,217 | 50% | ||
dhrms | 0 | 19,348,643,162 | 79% | ||
yuxi | 0 | 7,002,715,592 | 39.2% | ||
thatmemeguy | 0 | 4,706,452,760 | 50% | ||
edgarstudio | 0 | 617,554,708 | 100% | ||
dyancuex | 0 | 1,045,415,832 | 50% | ||
businesswri | 0 | 250,460,799 | 0.8% | ||
italianguy | 0 | 643,823,315 | 100% | ||
toninux | 0 | 655,497,073 | 50% | ||
jdc | 0 | 713,298,008 | 20% | ||
acwood | 0 | 780,637,039 | 0.8% | ||
bargolis | 0 | 672,900,137 | 5% | ||
bhmcintosh | 0 | 245,979,482 | 0.8% | ||
walnut1 | 0 | 7,336,301,781 | 5% | ||
ilyastarar | 0 | 74,889,245,179 | 50% | ||
flauwy | 0 | 69,011,780,330 | 35% | ||
mxzn | 0 | 600,314,346 | 0.8% | ||
herman2141 | 0 | 156,696,924 | 50% | ||
prechi | 0 | 5,128,495,025 | 50% | ||
mahdiyari | 0 | 12,612,998,293 | 20% | ||
ronimm | 0 | 14,214,408,258 | 100% | ||
mufasatoldyou | 0 | 7,650,082,427 | 100% | ||
imransoudagar | 0 | 730,648,849 | 0.8% | ||
onejoe | 0 | 606,262,259 | 100% | ||
evbettor | 0 | 300,468,985 | 0.8% | ||
simonluisi | 0 | 2,690,248,182 | 100% | ||
thinkkniht | 0 | 500,079,142 | 75% | ||
ewuoso | 0 | 37,317,961,571 | 20% | ||
jonbit | 0 | 569,852,774 | 0.8% | ||
jfuenmayor96 | 0 | 2,434,554,354 | 50% | ||
steemitri | 0 | 9,756,344,788 | 10% | ||
onos | 0 | 109,373,132 | 5% | ||
technerd888 | 0 | 356,139,454 | 0.8% | ||
justdentist | 0 | 2,943,263,780 | 5% | ||
bigdeej | 0 | 4,723,074,520 | 0.8% | ||
cifer | 0 | 4,937,101,596 | 80% | ||
jesdn16 | 0 | 2,988,704,611 | 100% | ||
xtramedium | 0 | 248,140,062 | 50% | ||
leir | 0 | 2,992,079,374 | 97% | ||
youareyourowngod | 0 | 522,391,754 | 0.8% | ||
stoodkev | 0 | 12,688,131,705 | 10% | ||
cwen | 0 | 1,546,510,154 | 100% | ||
luisrod | 0 | 116,008,370 | 15% | ||
ansonoxy | 0 | 1,750,813,906 | 100% | ||
funkie68 | 0 | 1,455,265,629 | 0.8% | ||
jamesbarraclough | 0 | 3,452,087,269 | 100% | ||
smafey | 0 | 1,116,178,166 | 50% | ||
espoem | 0 | 23,427,769,546 | 40% | ||
timmyeu | 0 | 830,363,823 | 50% | ||
bcrafts | 0 | 1,512,052,049 | 100% | ||
intuitivejakob | 0 | 630,809,321 | 0.8% | ||
maxwell95 | 0 | 146,747,112 | 50% | ||
loshcat | 0 | 1,709,757,513 | 100% | ||
omersurer | 0 | 195,076,119 | 1% | ||
minnow-review | 0 | 700,349,217 | 100% | ||
idlebright | 0 | 3,144,520,923 | 50% | ||
trabajadigital | 0 | 306,482,091 | 50% | ||
utopian-io | 0 | 22,119,257,344,231 | 15.05% | ||
oricaless | 0 | 280,211,140 | 0.8% | ||
steaknsteem | 0 | 2,109,796,714 | 50% | ||
moorkedi | 0 | 2,558,388,708 | 100% | ||
kimaben | 0 | 272,592,812 | 25% | ||
kslo | 0 | 2,511,732,602 | 50% | ||
mrmaracucho | 0 | 577,861,595 | 100% | ||
nathalie13 | 0 | 939,711,793 | 100% | ||
not-a-bird | 0 | 1,700,192,039 | 20% | ||
adhew | 0 | 61,532,000 | 10% | ||
bitopia | 0 | 1,444,094,955 | 100% | ||
berkaytekinsen | 0 | 1,643,175,355 | 100% | ||
eleonardo | 0 | 62,521,061 | 10% | ||
sharukhkhan | 0 | 612,711,068 | 100% | ||
zohaib715 | 0 | 336,459,563 | 50% | ||
evilest-fiend | 0 | 2,727,375,580 | 100% | ||
amirmirza | 0 | 544,206,145 | 100% | ||
studytext | 0 | 154,085,729 | 25% | ||
greenorange | 0 | 613,506,280 | 100% | ||
steemnews-fr | 0 | 1,382,915,553 | 100% | ||
checkthisout | 0 | 821,476,271 | 50% | ||
navx | 0 | 2,031,197,591 | 70% | ||
rakesh.net | 0 | 953,267,713 | 100% | ||
handfree42 | 0 | 223,972,241 | 50% | ||
ilovekrys | 0 | 258,739,439 | 50% | ||
williams-owb | 0 | 159,606,560 | 50% | ||
family.app | 0 | 108,035,490 | 100% | ||
ramprasad | 0 | 613,144,316 | 100% | ||
cgbartow | 0 | 2,157,557,983 | 25% | ||
varja | 0 | 515,101,384 | 50% | ||
maphics | 0 | 106,304,356 | 100% | ||
dethclad | 0 | 1,485,437,837 | 50% | ||
sebastiengllmt | 0 | 306,503,607 | 50% | ||
utopian-1up | 0 | 18,198,545,993 | 100% | ||
odesanya | 0 | 58,358,225 | 10% | ||
luoq | 0 | 9,775,062,026 | 50% | ||
barut | 0 | 697,997,397 | 50% | ||
carsonroscoe | 0 | 5,534,182,955 | 50% | ||
zlatkamrs | 0 | 389,545,266 | 70% | ||
amosbastian | 0 | 10,263,550,689 | 50% | ||
tdre | 0 | 726,328,235 | 100% | ||
bobsthinking | 0 | 4,604,660,812 | 100% | ||
acrywhif | 0 | 3,337,380,073 | 80% | ||
xplore | 0 | 475,517,256 | 50% | ||
layanmarissa | 0 | 221,846,146 | 50% | ||
proffgodswill | 0 | 61,299,229 | 10% | ||
barineka | 0 | 770,380,295 | 100% | ||
nataly2317 | 0 | 220,616,922 | 50% | ||
sweeverdev | 0 | 1,052,002,634 | 50% | ||
isacastillor | 0 | 1,262,415,784 | 95% | ||
devilonwheels | 0 | 1,793,141,628 | 10% | ||
anmeitheal | 0 | 5,298,090,205 | 50% | ||
ryacha21 | 0 | 3,708,833,262 | 100% | ||
rhotimee | 0 | 5,100,425,139 | 50% | ||
jrmiller87 | 0 | 2,493,451,815 | 100% | ||
solomon507 | 0 | 449,987,640 | 50% | ||
patatesyiyen | 0 | 78,453,580 | 12.5% | ||
deejee | 0 | 122,575,017 | 20% | ||
rsteem | 0 | 117,815,440 | 50% | ||
e-babil | 0 | 1,425,816,068 | 40% | ||
onin91 | 0 | 437,308,890 | 50% | ||
cryptoconnector | 0 | 1,739,502,392 | 0.8% | ||
kookjames | 0 | 981,618,735 | 100% | ||
isabella394 | 0 | 2,485,922,576 | 100% | ||
emailbox19149 | 0 | 165,794,418 | 50% | ||
jannt | 0 | 141,477,412 | 100% | ||
amicus | 0 | 319,085,958 | 0.8% | ||
faisalali734 | 0 | 456,919,517 | 100% | ||
lemony-cricket | 0 | 10,005,720,735 | 20% | ||
yeswanth | 0 | 613,361,162 | 100% | ||
kaking | 0 | 232,778,553 | 50% | ||
exploreand | 0 | 6,105,660,773 | 25% | ||
abdullahalnahid | 0 | 614,761,454 | 100% | ||
petvalbra | 0 | 612,587,562 | 100% | ||
steemassistant | 0 | 509,317,441 | 100% | ||
jeongpd | 0 | 1,053,236,994 | 100% | ||
hmctrasher | 0 | 381,207,215 | 10% | ||
photohunter1 | 0 | 2,742,688,919 | 100% | ||
photohunter2 | 0 | 103,575,844 | 100% | ||
photohunter3 | 0 | 99,604,162 | 100% | ||
photohunter4 | 0 | 84,986,416 | 100% | ||
photohunter5 | 0 | 82,487,898 | 100% | ||
josh26 | 0 | 74,346,877 | 10% | ||
xliapas | 0 | 614,500,000 | 100% | ||
howtosteem | 0 | 4,192,958,155 | 100% | ||
jbeguna04 | 0 | 476,674,943 | 50% | ||
fmbs25 | 0 | 287,457,318 | 50% | ||
zaggysteem | 0 | 617,174,075 | 100% | ||
livsky | 0 | 371,954,105 | 50% | ||
badmusazeez | 0 | 107,198,499 | 50% | ||
roj | 0 | 1,579,362,646 | 100% | ||
charitybot | 0 | 4,357,254,574 | 15% | ||
srcianuro | 0 | 612,566,975 | 100% | ||
pavolactico | 0 | 282,405,628 | 50% | ||
aderemi01 | 0 | 1,105,206,614 | 50% | ||
killbill73 | 0 | 171,525,628 | 50% | ||
amirdesaingrafis | 0 | 307,800,600 | 50% | ||
fai.zul | 0 | 308,026,821 | 50% | ||
nightdragon | 0 | 164,596,666 | 50% | ||
reazuliqbal | 0 | 1,225,351,241 | 100% | ||
aliyu-s | 0 | 373,036,648 | 50% | ||
estherekanem | 0 | 94,989,986 | 20% | ||
programminghub | 0 | 1,658,818,426 | 100% | ||
andr377 | 0 | 306,568,221 | 50% | ||
netya | 0 | 162,630,865 | 50% | ||
flinter | 0 | 165,496,108 | 50% | ||
opulence | 0 | 1,796,550,338 | 50% | ||
phasma | 0 | 122,604,626 | 20% | ||
heshe-f | 0 | 343,479,362 | 25% | ||
indralajuena | 0 | 615,061,300 | 100% | ||
donjyde | 0 | 237,163,491 | 50% | ||
aaronhydra | 0 | 613,900,777 | 100% | ||
sabbirkhan | 0 | 612,981,011 | 100% | ||
crispycoinboys | 0 | 2,219,779,064 | 30% | ||
gwapoaller | 0 | 306,295,764 | 50% | ||
ichigos | 0 | 431,183,406 | 100% | ||
bluestorm | 0 | 459,735,758 | 75% | ||
carlosmonroy | 0 | 608,479,857 | 100% | ||
dexter24 | 0 | 218,540,676 | 50% | ||
jardines | 0 | 307,451,167 | 50% | ||
statsexpert | 0 | 5,795,405,095 | 45% | ||
pepememes | 0 | 185,753,113 | 50% | ||
slsds | 0 | 123,708,460 | 100% | ||
cienpascal | 0 | 612,520,947 | 100% | ||
ayoade96 | 0 | 215,146,376 | 50% | ||
humayrakhan | 0 | 615,169,825 | 100% | ||
biv | 0 | 614,455,702 | 100% | ||
rongtuli | 0 | 613,023,134 | 100% | ||
carlos77 | 0 | 79,813,297 | 20% | ||
charitymemes | 0 | 169,172,251 | 15% | ||
animesukidesu | 0 | 190,081,265 | 50% | ||
aceh-redaksi | 0 | 612,933,583 | 100% | ||
linkinpark | 0 | 614,655,506 | 100% | ||
charlessup | 0 | 613,204,171 | 100% | ||
ozcanpolat | 0 | 245,036,611 | 50% | ||
esme-svh | 0 | 266,986,892 | 50% | ||
byrong | 0 | 308,123,797 | 50% | ||
fatih17 | 0 | 612,682,412 | 100% | ||
lapyae | 0 | 612,980,945 | 100% | ||
matl996 | 0 | 614,236,349 | 100% | ||
flugbot | 0 | 122,643,184 | 100% | ||
starbuckscoffee | 0 | 613,421,237 | 100% | ||
deux77 | 0 | 614,439,060 | 100% | ||
lemcriq | 0 | 57,226,213 | 20% | ||
steemlore | 0 | 102,168,698 | 50% | ||
nelsonlgc | 0 | 453,519,811 | 100% | ||
truthtrader | 0 | 65,102,902 | 50% | ||
chhantyal | 0 | 602,777,822 | 100% |
Thank you for the contribution. It has been approved. You can contact us on [Discord](https://discord.gg/uTyJkNm). **[[utopian-moderator]](https://utopian.io/moderators)**
author | cha0s0000 |
---|---|
permlink | re-programminghub-using-firebase-database-to-create-a-chat-application-in-android-part-ii-20180312t022321999z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
created | 2018-03-12 02:23:24 |
last_update | 2018-03-12 02:23:24 |
depth | 1 |
children | 0 |
last_payout | 2018-03-19 02:23:24 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 172 |
author_reputation | 30,983,518,016,225 |
root_title | "Using Firebase Database to create a chat application in Android : Part II" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,814,963 |
net_rshares | 0 |
### Hey @programminghub I am @utopian-io. I have just upvoted you! #### Achievements - WOW WOW WOW People loved what you did here. GREAT JOB! - You have less than 500 followers. Just gave you a gift to help you succeed! - Seems like you contribute quite often. AMAZING! #### Community-Driven Witness! I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER! - <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a> - <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a> - Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a> [](https://steemit.com/~witnesses) **Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**
author | utopian-io |
---|---|
permlink | re-programminghub-using-firebase-database-to-create-a-chat-application-in-android-part-ii-20180312t114833638z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
created | 2018-03-12 11:48:33 |
last_update | 2018-03-12 11:48:33 |
depth | 1 |
children | 0 |
last_payout | 2018-03-19 11:48:33 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 1,147 |
author_reputation | 152,955,367,999,756 |
root_title | "Using Firebase Database to create a chat application in Android : Part II" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,890,370 |
net_rshares | 0 |