How to Download PDF from URL in Android Code Example
In this tutorial, I am sharing how to download a pdf files from the server throw URL in android. Looking for Source code or need to understand how to download PDF files from URL or Server in Android, then you are at the right place. Here I explained Step by Step Tutorial of integrating PDF Downloader Functionality in your Android App
Tutorial of integrating PDF Downloader Functionality in your Android App. It’s an easy way to implement that you just follow the simple step and used it successfully.
How to Download PDF from URL in Android Code Example
Table of Contents
Step 1: First one to Start Android Studio
Step 2 : Seconds step to Create a New Project Project ClickOn ==> File ==> NEW ==> New Project
Step 3: AndroidManifest.xml file
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.codeplayon.pdf.download.example"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Step 4: Open your activity_main.XML and add this code.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.codeplayon.pdf.download.example.MainActivity"> <Button android:id="@+id/btnDownload" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="@color/colorPrimary" android:padding="16dp" android:text="DOWNLOAD PDF" android:textColor="#ffffff" android:textSize="18sp" android:textStyle="bold" /> </RelativeLayout>
Step 5: Open your java file Main.java and add these code on these.
package com.codeplayon.pdf.download.example;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btnDownload;
String URL = "https://www.codeplayon.com/samples/resume.pdf";
// Add your downolde file URL
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnDownload = (Button) findViewById(R.id.btnDownload);
btnDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DownloadTask(MainActivity.this, URL);
}
});
}
}
Step 6: Add the required files, this class is for checking the SD card.
package com.codeplayon.pdf.download.example; import android.os.Environment; public class CheckForSDCard { //Check If SD Card is present or not method public boolean isSDCardPresent() { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { return true; } return false; } }
Step 7: This class is for the downloading operation.
package com.codeplayon.pdf.download.example; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Environment; import android.os.Handler; import android.util.Log; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class DownloadTask { private static final String TAG = "Download Task"; private Context context; private String downloadUrl = "", downloadFileName = ""; private ProgressDialog progressDialog; public DownloadTask(Context context, String downloadUrl) { this.context = context; this.downloadUrl = downloadUrl; downloadFileName = downloadUrl.substring(downloadUrl.lastIndexOf('/'), downloadUrl.length());//Create file name by picking download file name from URL Log.e(TAG, downloadFileName); //Start Downloading Task new DownloadingTask().execute(); } private class DownloadingTask extends AsyncTask<Void, Void, Void> { File apkStorage = null; File outputFile = null; @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(context); progressDialog.setMessage("Downloading..."); progressDialog.setCancelable(false); progressDialog.show(); } @Override protected void onPostExecute(Void result) { try { if (outputFile != null) { progressDialog.dismiss(); ContextThemeWrapper ctw = new ContextThemeWrapper( context, R.style.Theme_AlertDialog); final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctw); alertDialogBuilder.setTitle("Document "); alertDialogBuilder.setMessage("Document Downloaded Successfully "); alertDialogBuilder.setCancelable(false); alertDialogBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alertDialogBuilder.setNegativeButton("Open report",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { File pdfFile = new File(Environment.getExternalStorageDirectory() + "/CodePlayon/" + downloadFileName); // -> filename = maven.pdf Uri path = Uri.fromFile(pdfFile); Intent pdfIntent = new Intent(Intent.ACTION_VIEW); pdfIntent.setDataAndType(path, "application/pdf"); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); try{ context.startActivity(pdfIntent); }catch(ActivityNotFoundException e){ Toast.makeText(context, "No Application available to view PDF", Toast.LENGTH_SHORT).show(); } } }); alertDialogBuilder.show(); // Toast.makeText(context, "Document Downloaded Successfully", Toast.LENGTH_SHORT).show(); } else { new Handler().postDelayed(new Runnable() { @Override public void run() { } }, 3000); Log.e(TAG, "Download Failed"); } } catch (Exception e) { e.printStackTrace(); //Change button text if exception occurs new Handler().postDelayed(new Runnable() { @Override public void run() { } }, 3000); Log.e(TAG, "Download Failed with Exception - " + e.getLocalizedMessage()); } super.onPostExecute(result); } @Override protected Void doInBackground(Void... arg0) { try { URL url = new URL(downloadUrl);//Create Download URl HttpURLConnection c = (HttpURLConnection) url.openConnection();//Open Url Connection c.setRequestMethod("GET");//Set Request Method to "GET" since we are grtting data c.connect();//connect the URL Connection //If Connection response is not OK then show Logs if (c.getResponseCode() != HttpURLConnection.HTTP_OK) { Log.e(TAG, "Server returned HTTP " + c.getResponseCode() + " " + c.getResponseMessage()); } //Get File if SD card is present if (new CheckForSDCard().isSDCardPresent()) { apkStorage = new File(Environment.getExternalStorageDirectory() + "/" + "CodePlayon"); } else Toast.makeText(context, "Oops!! There is no SD Card.", Toast.LENGTH_SHORT).show(); //If File is not present create directory if (!apkStorage.exists()) { apkStorage.mkdir(); Log.e(TAG, "Directory Created."); } outputFile = new File(apkStorage, downloadFileName);//Create Output file in Main File //Create New File if not present if (!outputFile.exists()) { outputFile.createNewFile(); Log.e(TAG, "File Created"); } FileOutputStream fos = new FileOutputStream(outputFile);//Get OutputStream for NewFile Location InputStream is = c.getInputStream();//Get InputStream for connection byte[] buffer = new byte[1024];//Set buffer type int len1 = 0;//init length while ((len1 = is.read(buffer)) != -1) { fos.write(buffer, 0, len1);//Write new file } //Close all connection after doing task fos.close(); is.close(); } catch (Exception e) { //Read exception if something went wrong e.printStackTrace(); outputFile = null; Log.e(TAG, "Download Error Exception " + e.getMessage()); } return null; } } }
simple Example of Download PDF from URL in Android Example. Stay connected for upcoming latest Android Development related training tutorials.
Quality articles is the secret to be a focus for the visitors to pay a quick visit the web site, that’s what this site is providing.|