当我们创建一个android应用程序时,而不是手动插入pdf,我们希望使用Firebase上的Internet来获取pdf。 Firebase Realtime Database是Google提供的后端服务,用于处理您的Android应用,IOS应用以及您的网站的后端任务。它提供了许多服务,例如存储,数据库等等。 Firebase著名的功能是其Firebase实时数据库。通过在您的应用程序中使用Firebase实时数据库,您可以向用户提供实时数据更新,而无需实际刷新您的应用程序。我们将创建存储桶,我们可以在其中插入pdf文件,并将其直接添加到我们的应用程序中。
我们将在本文中构建什么?
我们将在该项目中创建两个活动。在一个活动中,将有一个按钮,而在另一活动中,我们正在查看pdf文件。因此,当用户单击按钮时,将显示一个AlertBox,其中带有“ Download ”(下载),“ View ”(查看)和“ Cancel ”(取消)选项。因此,用户将选择是否要查看或下载pdf。下面提供了一个示例视频,以使您对本文中的工作有个大概的了解。注意,我们将使用Java语言实现该项目。
分步实施
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
第2步:将您的应用连接到Firebase
创建新项目后,导航至顶部栏上的“工具”选项。在里面单击Firebase。单击Firebase后,您可以在屏幕快照中看到下面提到的右列。
在该列内,导航到Firebase实时数据库。单击该选项,您将在“将应用程序连接到Firebase”和“将Firebase实时数据库添加到您的应用程序”中看到两个选项。单击立即连接,您的应用程序将连接到Firebase。之后,单击第二个选项,现在您的应用已连接到Firebase。
完成此过程后,您将看到以下屏幕。
现在,验证您的应用是否已连接到Firebase。转到您的build.gradle文件。导航至应用程序> Gradle脚本> build.gradle文件,并确保在依赖项部分中添加了以下依赖项。
implementation ‘com.google.firebase:firebase-database:19.6.0’
如果上述依赖项未添加到“依赖项”部分中。添加此依赖性并同步您的项目。现在,我们将转向应用程序的XML部分。另外,添加以下依赖项。
implementation ‘com.github.barteksc:android-pdf-viewer:2.8.2’
现在,同步将同步现在右上角的选择项目。
步骤3:在AndroidManifest.xml文件中添加Internet权限
导航到AndroidManifest.xml文件,并添加以下权限以在应用程序中获得Internet权限。
步骤4:使用activity_main.xml文件
转到activity_main.xml文件,并参考以下代码。以下是activity_main.xml文件的代码。
XML
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();
}
});
}
}
XML
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 {
@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();
}
}
}
步骤5:使用MainActivity。 Java文件
转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
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();
}
});
}
}
步骤6:建立新的ViewpdfActivity类别
请参考如何在Android Studio中创建新活动并将该活动命名为ViewpdfActivity 。此活动用于查看pdf文件。
步骤7:使用activity_view_pdf.xml文件
导航至应用程序> res>布局> activity_view_pdf.xml,然后将以下代码添加到该文件中。以下是activity_view_pdf.xml文件的代码。
XML格式
步骤8:使用ViewpdfActivity。 Java文件
转到ViewpdfActivity。 Java文件并参考以下代码。下面是ViewpdfActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
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 {
@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();
}
}
}
第9步:在Firebase存储上添加pdf并复制该pdf的链接
在firebase中,转到“存储”选项,然后单击“入门”按钮
之后,单击“上传文件”选项以在Firebase存储上插入pdf。
之后,单击您插入的pdf,然后pdf部分中将显示来自pdf的详细信息,然后单击访问令牌并复制pdf URL。
步骤10:将该pdf URL添加到实时数据库中
转到“实时数据库”选项,然后将这些值添加到数据库。在该屏幕内,单击左侧窗口中的“实时数据库”。
单击此选项后,您将看到右侧的屏幕。在此页面上,单击顶部栏中的“规则”选项。您将看到以下屏幕。
在此项目中,我们添加了适用于读取和写入的规则,因为我们没有使用任何身份验证来验证用户。因此,我们目前将其设置为true以测试我们的应用程序。更改规则后。单击右上角的“发布”按钮,您的规则将保存在此处。现在再次回到“数据”选项卡。现在,我们将从Firebase本身将数据手动添加到Firebase。在Firebase的“数据”选项卡中,您将看到以下屏幕。将光标悬停在null上,然后单击右侧的“ +”选项,然后单击该选项。单击该选项后。添加下图中添加的数据。确保将“ pdf”添加到“名称”字段中,因为我们将Firebase的参考设置为“ pdf”。因此,我们必须将其设置为“ pdf”。您可以更改参考,也可以在数据库中对其进行更改。在值字段内,粘贴复制的pdf网址。这将是我们要我们的pdfview内显示的字符串。添加数据后,单击添加按钮,您的数据将被添加到Firebase中,并且该数据将显示在您的应用中。
输出: