UPdate and Featch Image in Realbase Datatype
UPdate and Featch Image in Realbase Database
Xml code:-
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".profile">
<ImageView
android:id="@+id/uimage"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:src="@drawable/ic_launcher_background"/>
<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/uname"
android:textSize="20sp"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:hint="Update Your Name"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Info"
android:id="@+id/btnupdate"
android:layout_gravity="center"
android:textSize="25sp"
android:layout_marginTop="20sp"
android:padding="12dp"/>
</androidx.appcompat.widget.LinearLayoutCompat>
Java Codes:-
package com.niranjan.youtuberegisterlogin;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class profile extends AppCompatActivity {
ImageView uimage;
EditText uname;
Button btnupdate;
DatabaseReference dbreference;
StorageReference storageReference;
Uri filepath;
Bitmap bitmap;
String UserID="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
uimage=(ImageView)findViewById(R.id.uimage);
uname=(EditText) findViewById(R.id.uname);
btnupdate=(Button)findViewById(R.id.btnupdate);
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
UserID=user.getUid();
dbreference= FirebaseDatabase.getInstance().getReference().child("userprofile");
storageReference= FirebaseStorage.getInstance().getReference();
uimage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Dexter.withContext(getApplicationContext())
.withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Please Select File"),101);
}
@Override
public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {
}
@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {
permissionToken.continuePermissionRequest();
}
}).check();
}
});
btnupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
updatetofirebase();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==101 && resultCode==RESULT_OK)
{
filepath=data.getData();
try {
InputStream inputStream=getContentResolver().openInputStream(filepath);
bitmap= BitmapFactory.decodeStream(inputStream);
uimage.setImageBitmap(bitmap);
}catch (Exception ex)
{
Toast.makeText(getApplicationContext(),ex.getMessage(),Toast.LENGTH_LONG).show();
}
}
}
public void updatetofirebase()
{
final ProgressDialog pd=new ProgressDialog(this);
pd.setTitle("File Uploader");
pd.show();
final StorageReference uploader=storageReference.child("profileimages/"+"img"+System.currentTimeMillis());
uploader.putFile(filepath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
uploader.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final Map<String,Object> map=new HashMap<>();
map.put("uimage",uri.toString());
map.put("uname",uname.getText().toString());
dbreference.child(UserID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists())
dbreference.child(UserID).updateChildren(map);
else
dbreference.child(UserID).setValue(map);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
pd.dismiss();
Toast.makeText(getApplicationContext(),"Updated Successfully",Toast.LENGTH_LONG).show();
}
});
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
float percent=(100*snapshot.getBytesTransferred())/snapshot.getTotalByteCount();
pd.setMessage("Uploaded :"+(int)percent+"%");
}
});
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
UserID=user.getUid();
dbreference.child(UserID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()) {
uname.setText(snapshot.child("uname").getValue().toString());
Glide.with(getApplicationContext()).load(snapshot.child("uimage").getValue().toString()).into(uimage);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
Single Image Upload in firebase with uri
Xml:-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:background="@drawable/ic_launcher_background"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:id="@+id/pickimage"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Upload"
android:layout_gravity="center"
android:id="@+id/upload"/>
</LinearLayout>
Java Code:-
package com.niranjan.fireapp;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
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.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
ImageView imageView;
Uri uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView= findViewById(R.id.pickimage);
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference reference=storage.getReference();
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 174);
}
});
findViewById(R.id.upload).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (uri!=null){
StorageReference demoRef =reference.child("demo.jpg");
demoRef.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(MainActivity.this, "uploaded", Toast.LENGTH_SHORT).show();
demoRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri Downloduri) {
FirebaseDatabase database =FirebaseDatabase.getInstance();
DatabaseReference mref = database.getReference("ImageUrl");
mref.setValue(Downloduri.toString());
}
});
}
});
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 174 && resultCode==RESULT_OK){
uri=data.getData();
if (uri!=null){
Glide.with(MainActivity.this).load(uri).into(imageView);
}
}
}
}
Comments
Post a Comment