简体   繁体   English

应用程序从 sdcard 中列出活动中的 Pdf

[英]App to list Pdf in activity from sdcard

I am developing an app in android which requires a list activity to show all pdfs from sdcard..i found the below code and used it but it is not working my app is unfortunately closing.. can anyone tell me whats the error.我正在android中开发一个应用程序,它需要一个列表活动来显示sdcard中的所有pdf..我找到了下面的代码并使用了它但它不起作用我的应用程序不幸关闭..谁能告诉我错误是什么。

MainActivity.java主活动.java

package com.example.vinita.listallpdfs;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;

import static com.example.vinita.listallpdfs.R.layout.activity_main;


public class MainActivity extends ListActivity {
    ArrayAdapter adapter;
    int clickCounter=0;
    ArrayList listItems=new ArrayList();
    private File[] imagelist;
    String[] pdflist;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(activity_main);
        File images = Environment.getExternalStorageDirectory();
        //ListView list=(ListView)findViewById(R.id.list);
        imagelist = images.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return ((name.endsWith(".pdf")));
            }
        });
        pdflist = new String[imagelist.length];
        for (int i = 0; i < imagelist.length; i++) {
            pdflist[i] = imagelist[i].getName();
        }
        Arrays.sort(imagelist);
        Arrays.sort(pdflist);
        this.setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, pdflist));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

activity_main.xml活动_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:background="#ff3db0ff"
    android:orientation="vertical">


    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@android:id/list"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:scrollbars="vertical"/>
</RelativeLayout>

Add this permission to your manifest file将此权限添加到您的清单文件

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

hope it helps :D希望它有帮助:D

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM