首页 > 解决方案 > 无法打开上传到 firebase 的 pdf 文件

问题描述

我已将 pdf 文件上传到 firebase 并且还能够在 listview 中检索它,但是当我单击 listview 文件时它不会打开

我已将 pdf 文件上传到 firebase 并且还能够在 listview 中检索它,但是当我单击 listview 文件时它不会打开

我已将 pdf 文件上传到 firebase 并且还能够在 listview 中检索它,但是当我单击 listview 文件时它不会打开

package com.example.studentcoordinator;

import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

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;

import java.util.ArrayList;
import java.util.List;

public class Viewuploadedfiles extends AppCompatActivity {

    ListView viewuploadedfiles;
    DatabaseReference databaseReference;
    List<uploadPdf> uploadPdfs;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewuploadedfiles);

        viewuploadedfiles = findViewById(R.id.listuploadedfiles);
        uploadPdfs = new ArrayList<>();

        viewAllFiles();

        viewuploadedfiles.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                uploadPdf uploadPdf = uploadPdfs.get(position);

                Intent intent = new Intent();
                intent.setType(Intent.CATEGORY_OPENABLE);
                intent.setData(Uri.parse(uploadPdf.getUrl()));
                startActivity(intent);
            }
        });


    }

    private void viewAllFiles() {

        databaseReference = FirebaseDatabase.getInstance().getReference("uploads");
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

                    uploadPdf uploadPdf = postSnapshot.getValue(com.example.studentcoordinator.uploadPdf.class);
                    uploadPdfs.add(uploadPdf);

                }

                String[] uploads = new String[uploadPdfs.size()];

                for (int i = 0; i < uploads.length; i++) {

                    uploads[i] = uploadPdfs.get(i).getName();

                }

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, uploads) {

                    @Override
                    public View getView(int position, View convertView, ViewGroup parent) {

                        View view = super.getView(position, convertView, parent);

                        TextView myText = view.findViewById(android.R.id.text1);
                        myText.setTextColor(Color.BLACK);

                        return view;
                    }
                };
                viewuploadedfiles.setAdapter(adapter);
            }

            ;

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}

它应该打开列表视图中列出的 PDF 文件,而不是在以前的活动中重定向我

标签: javaandroid

解决方案


看起来您的 Intent 并未指示 PDF 使用读取 PDF 文件的应用程序或网站打开 PDF。这就是为什么它只是回到以前的活动。

要在浏览器中打开 pdf,

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(pdf_url));
startActivity(browserIntent);

推荐阅读