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);
}
}
}
}
No comments:
Post a Comment