Как загрузить PDF-файлы в хранилище Firebase на Android?
Firebase — платформа для разработки мобильных и веб-приложений. Он предоставляет услуги, которые могут потребоваться веб-приложению или мобильному приложению. Firebase обеспечивает безопасную загрузку и скачивание файлов для приложения Firebase. В этой статье объясняется, как создать приложение для Android с возможностью выбора pdf-файла с мобильного телефона и загрузки этого pdf-файла в хранилище Firebase .
Пошаговая реализация
Шаг 1: Создайте новый проект
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Обратите внимание, что в качестве языка программирования выберите Java . И добавьте firebase в свой проект, или вы можете обратиться к разделу «Добавление Firebase в приложение Android».
Шаг 2. Добавьте зависимость в файл build.gradle (Module: app).
Перейдите к Gradle Scripts > build.gradle (Module: app) и добавьте приведенную ниже зависимость в раздел зависимостей.
implementation ‘com.google.firebase:firebase-storage:16.0.4’
implementation fileTree(dir: ‘libs’, include: [‘*.jar’])
После добавления этой зависимости синхронизируйте свой проект, и теперь мы перейдем к ее реализации.
Шаг 3: Работа с файлом activity_main.xml
Перейдите к приложению > res > layout > activity_main.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_main.xml .
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" > < 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 > |
Шаг 4: Работа с файлом MainActivity.java
Перейдите к файлу MainActivity.java и обратитесь к следующему коду. Ниже приведен код файла MainActivity.java . Комментарии добавляются внутри кода, чтобы понять код более подробно.
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(); } } }); } } } |
Выход:
Хранилище Firebase:
Ссылка на гитхаб.