package com.example.trial_myapp;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
public class MainActivity extends AppCompatActivity {
private Button b1,b2;
private Uri imageuri;
FirebaseAuth auth;
@Override
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK&&requestCode==1&&data.getData()!=null)
{
//Toast.makeText(MainActivity.this,"onactivity wala",Toast.LENGTH_SHORT).show();
imageuri = data.getData();
chosefile(imageuri);
}
}
private void chosefile(Uri imageuri) {
//Toast.makeText(MainActivity.this,"choose file wala",Toast.LENGTH_SHORT).show();
ProgressDialog pd = new ProgressDialog(MainActivity.this);
pd.setMessage("uploading");
pd.show();
StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("uploads").child(System.currentTimeMillis()+"."+getFileExtension(imageuri));
storageReference.putFile(imageuri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Toast.makeText(MainActivity.this,"uploaded successfully",Toast.LENGTH_SHORT).show();
FirebaseDatabase.getInstance().getReference().child("uploads").push().setValue(uri.toString())
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete( Task<Void> task) {
if(task.isSuccessful())
{
Toast.makeText(MainActivity.this,"success",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(MainActivity.this,"failure",Toast.LENGTH_LONG).show();
}
}
});
String k = uri.toString();
Log.d("msg",k);
Toast.makeText(MainActivity.this,k,Toast.LENGTH_SHORT).show();
}
});
pd.dismiss();
}
});
}
private String getFileExtension(Uri imageuri) {
ContentResolver contentResolver = getContentResolver();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
//Toast.makeText(MainActivity.this,"extension wala",Toast.LENGTH_SHORT).show();
return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(imageuri));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = findViewById(R.id.add_image);
b2 = findViewById(R.id.show_image);
auth = FirebaseAuth.getInstance();
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//FirebaseDatabase.getInstance().getReference().child("cc").setValue("hello");
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(intent.ACTION_GET_CONTENT);
startActivityForResult(intent,1);
//Toast.makeText(MainActivity.this,"intent wala",Toast.LENGTH_SHORT).show();
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this,Showimages.class));
}
});
}
}
i am getting the link to the image in Log.d and the toast
Toast.makeText(MainActivity.this,"uploaded successfully",Toast.LENGTH_SHORT).show();
AND
Toast.makeText(MainActivity.this,k,Toast.LENGTH_SHORT).show();
are both shown but url is not saved in realtime database...saw some ques on stackoverflow but didn't found answer the image is getting saved in firebase storage.
if i add this
FirebaseDatabase.getInstance().getReference().child("cc").setValue("hello");
on b1.setonclick... then also it is not added in realtime database.
On same browser for another app data is being added to both realtime db and storage, the code is similar in both apps.