Cuando estamos creando una aplicación de Android, en lugar de insertar un pdf manualmente, queremos obtener el pdf usando Internet desde firebase. Firebase Realtime Database Firebase Crearemos nuestro depósito de almacenamiento y podemos insertar nuestro pdf allí y obtenerlo directamente en nuestra aplicación.
¿Qué vamos a construir en este artículo?
Vamos a crear dos actividades en este proyecto. En una actividad habrá un solo botón y en otra actividad, estamos viendo el archivo pdf. Entonces, cuando el usuario haga clic en el botón, se mostrará un cuadro de alerta con las opciones » Descargar «, » Ver » y » Cancelar «. Así el usuario elegirá si quiere Ver o Descargar el pdf.
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.
Paso 2: conecta tu aplicación a Firebase
Después de crear un nuevo proyecto, vaya a la opción Herramientas en la barra superior. Dentro de eso, haga clic en Firebase. Después de hacer clic en Firebase, puede ver la columna de la derecha que se menciona a continuación en la captura de pantalla.
Dentro de esa columna, navegue hasta Firebase Realtime Database. Haga clic en esa opción y verá dos opciones en Conectar la aplicación a Firebase y Agregar Firebase Realtime Database a su aplicación. Haga clic en Conectar ahora y su aplicación se conectará a Firebase. Después de eso, haga clic en la segunda opción y ahora su aplicación está conectada a Firebase.
implementación ‘com.google.firebase:firebase-database:19.6.0’
Si la dependencia anterior no se agrega en su sección de dependencias. Agregue esta dependencia y sincronice su proyecto. Ahora nos moveremos hacia la parte XML de nuestra aplicación. Además, agregue la siguiente dependencia.
implementación ‘com.github.barteksc:android-pdf-viewer:2.8.2’
Ahora sincronice el proyecto desde la opción de la esquina superior derecha de Sincronizar ahora .
Paso 3: Agregar permiso de Internet en el archivo AndroidManifest.xml
Navegue hasta el archivo AndroidManifest.xml y agregue el siguiente permiso para obtener permiso de Internet en la aplicación.
<usos-permiso android:name=”android.permission.INTERNET”/>
<usos-permiso android:name=”android.permission.READ_EXTERNAL_STORAGE” />
<usos-permiso android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
Paso 4: trabajar con el archivo activity_main.xml
Vaya al archivo activity_main.xml y consulte el siguiente código. 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"> <!--We will click on it to view pdf--> <Button android:id="@+id/view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@color/black" android:padding="10dp" android:text="Click here to View pdf " android:textSize="10dp" /> </LinearLayout>
Paso 5: 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.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; 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; public class MainActivity extends AppCompatActivity { Button view; DatabaseReference database; String message; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view = findViewById(R.id.view); // Initialising the reference to database database = FirebaseDatabase.getInstance().getReference().child("pdf"); database.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { // getting a DataSnapshot for the location at the specified // relative path and getting in the link variable message = dataSnapshot.getValue(String.class); } // this will called when any problem // occurs in getting data @Override public void onCancelled(@NonNull DatabaseError databaseError) { // we are showing that error message in toast Toast.makeText(MainActivity.this, "Error Loading Pdf", Toast.LENGTH_SHORT).show(); } }); // After clicking here alert box will come view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { CharSequence options[] = new CharSequence[]{ "Download", "View", "Cancel" }; AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); builder.setTitle("Choose One"); builder.setItems(options, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // we will be downloading the pdf if (which == 0) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(message)); startActivity(intent); } // We will view the pdf if (which == 1) { Intent intent = new Intent(v.getContext(), ViewPdfActivity.class); intent.putExtra("url", message); startActivity(intent); } } }); builder.show(); } }); } }
Paso 6: Cree una nueva clase ViewpdfActivity
Consulte la actividad ViewpdfActivity . Esta actividad se utiliza para ver el archivo pdf.
Paso 7: trabajar con el archivo activity_view_pdf.xml
aplicación > res > diseño > actividad_view_pdf.xml actividad_view_pdf.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" tools:context=".ViewPdfActivity"> <com.github.barteksc.pdfviewer.PDFView android:id="@+id/abc" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
Paso 8: trabajar con el archivo ViewpdfActivity.java
Vaya al archivo ViewpdfActivity.java y consulte el siguiente código. A continuación se muestra el código para el archivo ViewpdfActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
import androidx.appcompat.app.AppCompatActivity; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import com.github.barteksc.pdfviewer.PDFView; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class ViewPdfActivity extends AppCompatActivity { String urls; PDFView pdfView; ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_pdf); pdfView = findViewById(R.id.abc); // Firstly we are showing the progress // dialog when we are loading the pdf dialog = new ProgressDialog(this); dialog.setMessage("Loading.."); dialog.show(); // getting url of pdf using getItentExtra urls = getIntent().getStringExtra("url"); new RetrivePdfStream().execute(urls); } // Retrieving the pdf file using url class RetrivePdfStream extends AsyncTask<String, Void, InputStream> { @Override protected InputStream doInBackground(String... strings) { InputStream inputStream = null; try { // adding url URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // if url connection response code is 200 means ok the execute if (urlConnection.getResponseCode() == 200) { inputStream = new BufferedInputStream(urlConnection.getInputStream()); } } // if error return null catch (IOException e) { return null; } return inputStream; } @Override // Here load the pdf and dismiss the dialog box protected void onPostExecute(InputStream inputStream) { pdfView.fromStream(inputStream).load(); dialog.dismiss(); } } }
Paso 9: agregar pdf en el almacenamiento de base de fuego y copiar el enlace de ese pdf
En firebase, vaya a la opción Almacenamiento y luego haga clic en el botón Comenzar
Después de eso, haga clic en la opción Cargar archivo para insertar un pdf en el almacenamiento de firebase .
Después de eso, haga clic en el pdf que insertó, luego los detalles del pdf vienen en la sección derecha, luego haga clic en el token de acceso y copie la URL del pdf.
Paso 10: agregue esa URL de pdf a la base de datos en tiempo real
Vaya a la opción de base de datos en tiempo real y luego agregue estos valores a la base de datos. Dentro de esa pantalla, haga clic en Base de datos en tiempo real en la ventana izquierda.
Después de hacer clic en esta opción, verá la pantalla en el lado derecho. En esta página, haga clic en la opción Reglas que se encuentra en la barra superior. Verá la siguiente pantalla.
la
Producción: