Firebase es una plataforma de desarrollo de aplicaciones móviles y web. Proporciona servicios que una aplicación web o una aplicación móvil pueden requerir. Firebase proporciona cargas y descargas seguras de archivos para la aplicación Firebase. Este artículo explica cómo crear una aplicación de Android con la capacidad de seleccionar el pdf desde el teléfono móvil y cargar ese pdf en Firebase Storage .
Implementación paso a paso
Paso 1: crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación. Y agregue firebase a su proyecto o puede consultar Agregar Firebase a la aplicación de Android .
Paso 2: Agregue la dependencia en el archivo build.gradle (Módulo: aplicación)
Navegue a Gradle Scripts > build.gradle (Módulo: aplicación) y agregue la siguiente dependencia en la sección de dependencias.
implementación ‘com.google.firebase:firebase-storage:16.0.4’
implementación fileTree(dir: ‘libs’, include: [‘*.jar’])
Después de agregar esta dependencia, sincronice su proyecto y ahora avanzaremos hacia su implementación.
Paso 3: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".MainActivity"> <ImageView android:id="@+id/uploadpdf" android:layout_width="200dp" android:layout_height="200dp" android:src="@drawable/ic_picture_as_pdf_black_24dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Upload A Pdf" android:textSize="22sp" android:textStyle="bold" /> </LinearLayout>
Paso 4: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
import android.app.ProgressDialog; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.tasks.Continuation; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; public class MainActivity extends AppCompatActivity { ImageView upload; Uri imageuri = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); upload = findViewById(R.id.uploadpdf); // After Clicking on this we will be // redirected to choose pdf upload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent galleryIntent = new Intent(); galleryIntent.setAction(Intent.ACTION_GET_CONTENT); // We will be redirected to choose pdf galleryIntent.setType("application/pdf"); startActivityForResult(galleryIntent, 1); } }); } ProgressDialog dialog; @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { // Here we are initialising the progress dialog box dialog = new ProgressDialog(this); dialog.setMessage("Uploading"); // this will show message uploading // while pdf is uploading dialog.show(); imageuri = data.getData(); final String timestamp = "" + System.currentTimeMillis(); StorageReference storageReference = FirebaseStorage.getInstance().getReference(); final String messagePushID = timestamp; Toast.makeText(MainActivity.this, imageuri.toString(), Toast.LENGTH_SHORT).show(); // Here we are uploading the pdf in firebase storage with the name of current time final StorageReference filepath = storageReference.child(messagePushID + "." + "pdf"); Toast.makeText(MainActivity.this, filepath.getName(), Toast.LENGTH_SHORT).show(); filepath.putFile(imageuri).continueWithTask(new Continuation() { @Override public Object then(@NonNull Task task) throws Exception { if (!task.isSuccessful()) { throw task.getException(); } return filepath.getDownloadUrl(); } }).addOnCompleteListener(new OnCompleteListener<Uri>() { @Override public void onComplete(@NonNull Task<Uri> task) { if (task.isSuccessful()) { // After uploading is done it progress // dialog box will be dismissed dialog.dismiss(); Uri uri = task.getResult(); String myurl; myurl = uri.toString(); Toast.makeText(MainActivity.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show(); } else { dialog.dismiss(); Toast.makeText(MainActivity.this, "UploadedFailed", Toast.LENGTH_SHORT).show(); } } }); } } }
Producción:
Almacenamiento de base de fuego: