使用' com.github.barteksc打开pdf时的空白屏幕:android-pdf-viewer:2.8.2'图书馆

时间:2017-12-29 19:31:35

标签: android

我在使用此库时遇到问题

compile 'com.github.barteksc:android-pdf-viewer:2.8.2'

我有几个从我的应用程序创建的pdf,我想给用户一个选项,从app中查看它们。我从对话框中加载文件,然后选择所选的pdf shoulld open.Here是对话框

public class FileExplore extends BaseActivityAlt {

private static final String TAG = "F_PATH";
private static final int DIALOG_LOAD_FILE = 1000;
ArrayList<String> str = new ArrayList<String>();
ListAdapter adapter;
private Boolean firstLvl = true;
private Item[] fileList;
private File path = new File(Environment.getExternalStorageDirectory() + "/Travelite/Saved/");
private String chosenFile;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    loadFileList();

    showDialog(DIALOG_LOAD_FILE);
    Log.d(TAG, path.getAbsolutePath());

}
@Override
public void onBackPressed(){
    Intent intent = new Intent(this,TicketActivity.class);
    startActivity(intent);
}

private void loadFileList() {
    try {
        path.mkdirs();
    } catch (SecurityException e) {
        Log.e(TAG, "unable to write on the sd card ");
    }

    // Checks whether path exists
    if (path.exists()) {
        FilenameFilter filter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String filename) {
                File sel = new File(dir, filename);
                // Filters based on whether the file is hidden or not
                return (sel.isFile() || sel.isDirectory())
                        && !sel.isHidden();

            }
        };

        String[] fList = path.list(filter);
        fileList = new Item[fList.length];
        for (int i = 0; i < fList.length; i++) {
            fileList[i] = new Item(fList[i], R.mipmap.pdf_icon);

            // Convert into file path
            File sel = new File(path, fList[i]);

            // Set drawables
            if (sel.isDirectory()) {
                fileList[i].icon = R.drawable.company;
                Log.d("DIRECTORY", fileList[i].file);
            } else {
                Log.d("FILE", fileList[i].file);
            }
        }

        if (!firstLvl) {
            Item temp[] = new Item[fileList.length + 1];
            for (int i = 0; i < fileList.length; i++) {
                temp[i + 1] = fileList[i];
            }
            temp[0] = new Item("Up", R.drawable.forward);
            fileList = temp;
        }
    } else {
        Log.e(TAG, "path does not exist");
    }

    adapter = new ArrayAdapter<Item>(this,
            android.R.layout.select_dialog_item, android.R.id.text1,
            fileList) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // creates view
            View view = super.getView(position, convertView, parent);
            TextView textView = view
                    .findViewById(android.R.id.text1);

            // put the image on the text view
            textView.setCompoundDrawablesWithIntrinsicBounds(
                    fileList[position].icon, 0, 0, 0);

            // add margin between image and text (support various screen
            // densities)
            int dp5 = (int) (5 * getResources().getDisplayMetrics().density + 0.5f);
            textView.setCompoundDrawablePadding(dp5);

            return view;
        }
    };

}

@Override
protected Dialog onCreateDialog(int id) {
    Dialog dialog = null;
    AlertDialog.Builder builder = new Builder(this);

    if (fileList == null) {
        Log.e(TAG, "No files loaded");
        dialog = builder.create();
        return dialog;
    }

    switch (id) {
        case DIALOG_LOAD_FILE:
            builder.setTitle(R.string.choose_file);
            builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    chosenFile = fileList[which].file;
                    File sel = new File(path + "/" + chosenFile);
                    if (sel.isDirectory()) {
                        firstLvl = false;

                        // Adds chosen directory to list
                        str.add(chosenFile);
                        fileList = null;
                        path = new File(sel + "");

                        loadFileList();

                        removeDialog(DIALOG_LOAD_FILE);
                        showDialog(DIALOG_LOAD_FILE);
                        Log.d(TAG, path.getAbsolutePath());

                    }

                    // Checks if 'up' was clicked
                    else if (chosenFile.equalsIgnoreCase("up") && !sel.exists()) {

                        // present directory removed from list
                        String s = str.remove(str.size() - 1);

                        // path modified to exclude present directory
                        path = new File(path.toString().substring(0,
                                path.toString().lastIndexOf(s)));
                        fileList = null;

                        // if there are no more directories in the list, then
                        // its the first level
                        if (str.isEmpty()) {
                            firstLvl = true;
                        }
                        loadFileList();

                        removeDialog(DIALOG_LOAD_FILE);
                        showDialog(DIALOG_LOAD_FILE);
                        Log.d(TAG, path.getAbsolutePath());

                    }
                    // File picked
                    else {
                        File file = new File(Environment.getExternalStorageDirectory(),
                                chosenFile);
                        Intent intent = new Intent(FileExplore.this,PdfViewer.class);
                        intent.putExtra("Filename",chosenFile);
                        startActivity(intent);
                    }

                }
            });
            break;
    }
    dialog = builder.show();
    return dialog;
}

private class Item {
    public String file;
    public int icon;

    public Item(String file, Integer icon) {
        this.file = file;
        this.icon = icon;
    }

    @Override
    public String toString() {
        return file;
    }
}}

这是加载的类,点击对话框中的项目

public class PdfViewer extends BaseActivityAlt implements OnLoadCompleteListener, OnPageErrorListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pdf_viewer);

    PDFView pdfView = (PDFView) findViewById(R.id.pdfView);

    String filename = getIntent().getStringExtra("Filename");
    File pdffile = new File(Environment.getExternalStorageDirectory(),filename);
    Uri file = Uri.fromFile(pdffile);
    Toast.makeText(PdfViewer.this, filename, Toast.LENGTH_LONG).show();

    pdfView.fromUri(file)
            .defaultPage(1)
            .password(null)
            .load();
}

@Override
public void loadComplete(int nbPages) {

}

@Override
public void onPageError(int page, Throwable t) {

}}

1 个答案:

答案 0 :(得分:0)

我刚刚意识到自己的错误:我完全忘了添加路径。