Download Pdf From Firebase Storage Android
When we are creating an android app then instead of inserting a pdf manually we want to fetch the pdf using the internet from firebase. Firebase Realtime Database is the backend service which is provided by Google for handling backend tasks for your Android apps, IOS apps as well as your websites. It provides so many services such as storage, database, and many more. The feature for which Firebase is famous is its Firebase Realtime Database. By using Firebase Realtime Database in your app you can give live data updates to your users without actually refreshing your app. We will be creating our storage bucket and we can insert our pdf there and get it directly into our app.
What we are going to build in this article?
We will be creating two Activities in this project. In one activity there will e a single Button and in another activity, we are viewing the pdf file. So when the user will click on the Button an AlertBox will be shown with there options "Download", "View", and "Cancel". So the user will choose whether he/she want to View or Download the pdf. A sample video is given below to get an idea about what we are going to do in this article. Note that we are going to implement this project using theJava language.
Attention reader! Don't stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course .
Step by Step Implementation
Step 1: Create a New Project
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.
Step 2: Connect your app to Firebase
After creating a new project, navigate to the Tools option on the top bar. Inside that click on Firebase. After clicking on Firebase, you can get to see the right column mentioned below in the screenshot.
Inside that column Navigate to Firebase Realtime Database. Click on that option and you will get to see two options on Connect app to Firebase and Add Firebase Realtime Database to your app. Click on Connect now and your app will be connected to Firebase. After that click on the second option and now your App is connected to Firebase.
After completing this process you will get to see the below screen.
Now verify that your app is connected to Firebase or not. Go to your build.gradle file. Navigate to the app > Gradle Scripts > build.gradle file and make sure that the below dependency is added in your dependencies section.
implementation 'com.google.firebase:firebase-database:19.6.0'
If the above dependency is not added in your dependencies section. Add this dependency and sync your project. Now we will move towards the XML part of our app. Also, add the following dependency.
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
Now sync the project from the top right corner option of Sync now.
Step 3: Add Internet permission in the AndroidManifest.xml file
Navigate to the AndroidManifest.xml file and add the below permission for getting internet permission in the app.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Step 4: Working with the activity_main.xml file
Go to the activity_main.xml file and refer to the following code. Below is the code for the activity_main.xml file.
XML
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:gravity
=
"center"
android:orientation
=
"vertical"
tools:context
=
".MainActivity"
>
<
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
>
Step 5: Working with the MainActivity.java file
Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.
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);
database = FirebaseDatabase.getInstance().getReference().child(
"pdf"
);
database.addListenerForSingleValueEvent(
new
ValueEventListener() {
@Override
public
void
onDataChange(
@NonNull
DataSnapshot dataSnapshot) {
message = dataSnapshot.getValue(String.
class
);
}
@Override
public
void
onCancelled(
@NonNull
DatabaseError databaseError) {
Toast.makeText(MainActivity.
this
,
"Error Loading Pdf"
, Toast.LENGTH_SHORT).show();
}
});
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) {
if
(which ==
0
) {
Intent intent =
new
Intent(Intent.ACTION_VIEW, Uri.parse(message));
startActivity(intent);
}
if
(which ==
1
) {
Intent intent =
new
Intent(v.getContext(), ViewPdfActivity.
class
);
intent.putExtra(
"url"
, message);
startActivity(intent);
}
}
});
builder.show();
}
});
}
}
Step 6: Create a new ViewpdfActivity class
Please refer to How to Create New Activity in Android Studio and name the activity as ViewpdfActivity. This activity is used for viewing the pdf file.
Step 7: Working with the activity_view_pdf.xml file
Navigate to the app > res > layout > activity_view_pdf.xml and add the below code to that file. Below is the code for the activity_view_pdf.xml file.
XML
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
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
>
Step 8: Working with the ViewpdfActivity.java file
Go to the ViewpdfActivity.java file and refer to the following code. Below is the code for the ViewpdfActivity.java file. Comments are added inside the code to understand the code in more detail.
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);
dialog =
new
ProgressDialog(
this
);
dialog.setMessage(
"Loading.."
);
dialog.show();
urls = getIntent().getStringExtra(
"url"
);
new
RetrivePdfStream().execute(urls);
}
class
RetrivePdfStream
extends
AsyncTask<String, Void, InputStream> {
@Override
protected
InputStream doInBackground(String... strings) {
InputStream inputStream =
null
;
try
{
URL url =
new
URL(strings[
0
]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if
(urlConnection.getResponseCode() ==
200
) {
inputStream =
new
BufferedInputStream(urlConnection.getInputStream());
}
}
catch
(IOException e) {
return
null
;
}
return
inputStream;
}
@Override
protected
void
onPostExecute(InputStream inputStream) {
pdfView.fromStream(inputStream).load();
dialog.dismiss();
}
}
}
Step 9: Adding pdf on firebase storage and copy the link of that pdf
In firebase go to the Storage option then click on Get Started button
After that click on the Upload file option to insert a pdf on firebase storage.
After that click on the pdf that you inserted then the from pdf details come in the right section then click on the access token and copy the pdf URL.
Step 10: Add that pdf URL to the real-time database
Go to the Realtime database option then add these values to the database. Inside that screen click on Realtime Database in the left window.
After clicking on this option you will get to see the screen on the right side. On this page click on the Rules option which is present in the top bar. You will get to see the below screen.
In this project, we are adding our rules as true for reading as well as a write because we are not using any authentication to verify our user. So we are currently setting it to true to test our application. After changing your rules. Click on the publish button at the top right corner and your rules will be saved there. Now again come back to the Data tab. Now we will be adding our data to Firebase manually from Firebase itself. Inside Firebase in the Data tab, you are getting to see the below screen. Hover your cursor on null and click on the "+" option on the right side and click on that option. After clicking on that option. Add the data as added in the below image. Make sure to add "pdf" in the Name field because we are setting our reference for Firebase as "pdf". So we have to set it to "pdf". You can change your reference and also change it in the Database. Inside the value field, paste the copied pdf url. This will be the string which we are going to display inside our pdfview. After adding data click on the add button and your data will be added in Firebase and this data will be displayed in your app.
Output:
Source: https://www.geeksforgeeks.org/how-to-retrieve-pdf-file-from-firebase-realtime-database-in-android/
Posted by: jasonjasontimmee0270137.blogspot.com
Post a Comment for "Download Pdf From Firebase Storage Android"