2

アプリケーションがローカルに保存されたpdf、doc、xlsファイルを読み取る必要があるプロジェクトを作成しようとしています。

どうすればいいのかわかりません。ローカルに保存されているすべてのファイルを webview に表示したいと考えています。このファイルをレンダリングするライブラリ、またはそれを行う他の方法はありますか? 誰かがそれについて私を導くことができれば、それは私の喜びです.

4

1 に答える 1

0
package com.cdn.file;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class FileExplorerActivity extends Activity {
    /** Called when the activity is first created. */
    private Button buttonList, buttonBack;
    // Stores names of traversed directories
    ArrayList<String> str = new ArrayList<String>();
    // Check if the first level of the directory structure is the one showing

    private static final String TAG = "F_PATH";
    private List<Item> fileList;
    private Item item;
    private File path = new File(Environment.getExternalStorageDirectory() + "");
    private String chosenFile = "";

    ListView listViewDir;
    ListAdapter adapter;
    ListFile listFileAdaptor;
    int value = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listViewDir = (ListView) findViewById(R.id.listViewDir);

        buttonBack = (Button) findViewById(R.id.buttonBack);
        buttonBack.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


            }
        });

        buttonList = (Button) findViewById(R.id.buttonList);
        buttonList.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                if (isSdPresent()) {
                    Toast.makeText(FileExplorerActivity.this, "Un Mounted",
                            Toast.LENGTH_SHORT).show();
                    loadFileList();
                    listFileAdaptor = new ListFile(FileExplorerActivity.this,
                            fileList);
                    listViewDir.setAdapter(listFileAdaptor);


                }

                else {
                    Toast.makeText(FileExplorerActivity.this, "Mounted",
                            Toast.LENGTH_SHORT).show();
                }

            }

        });

        listViewDir.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
            //  if (value == 0) {
                    chosenFile = fileList.get(position).getFile();
                /*} else {
                    chosenFile = backList.get(position).getFile();
                    value =0;
                }*/
                File sel = new File(path + "/" + chosenFile);

                Log.v("Prashant111 ==", sel.toString());
                Log.v("Prashant222 ==", "" + sel.toURI());

                if (sel.isDirectory()) {

                    // Adds chosen directory to list
                    str.add(chosenFile);

                    path = new File(sel + "");

                    loadFileList();
                    listFileAdaptor = new ListFile(FileExplorerActivity.this,
                            fileList);
                    listViewDir.setAdapter(listFileAdaptor);


                    // Log.d(TAG, path.getAbsolutePath());

                    Log.d("Prashant333 ==", "" + path.toURI());

                    Log.d("Prashant444 ==", "" + path.toString());

                }

                // Checks if 'up' was clicked

                // File picked
                else {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    Uri uri = Uri.fromFile(new File(chosenFile));
                    intent.putExtra(Intent.ACTION_VIEW, uri);
                    Intent chooser = Intent.createChooser(intent, "Prashant");
                    startActivity(chooser);

                }

            }
        });
    }

    public static boolean isSdPresent() {
        return android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_MOUNTED);

    }

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

        public String getFile() {
            return file;
        }

        public void setFile(String file) {
            this.file = file;
        }

        public int getIcon() {
            return icon;
        }

        public void setIcon(int icon) {
            this.icon = icon;
        }

    }

    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 ArrayList<FileExplorerActivity.Item>();

            for (int i = 0; i < fList.length; i++) {
                item = new Item();
                item.setIcon(R.drawable.file_icon);
                item.setFile(fList[i]);
                // fileList.add(item);
                // Convert into file path
                File sel = new File(path, fList[i]);

                Log.v("sel ====", sel.toString());

                String name = sel.getName();

                // Set drawables
                if (sel.isDirectory()) {
                    item.setFile(name);
                    item.setIcon(R.drawable.directory_icon);
                    fileList.add(item);

                } else {
                    if (name.endsWith(".mp4") || name.endsWith(".3gp")) {
                        Log.v("aaaaaaaaaaa", name);
                        item.setFile(name);
                        item.setIcon(R.drawable.icon);
                        fileList.add(item);
                    } else {

                        fileList.remove(item);
                    }
                }
            }

        } else {
            Log.e(TAG, "path does not exist");
        }

    }

    class ViewHolder {
        TextView textViewName;
        ImageView view;
    }

    class ListFile extends BaseAdapter {
        List<Item> fileList;
        private LayoutInflater inflator;
        Context context;

        ListFile(Context context, List<Item> fileList) {
            this.fileList = fileList;
            this.context = context;
            inflator = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {

            return fileList.size();
        }

        @Override
        public Object getItem(int position) {

            return fileList.get(position);
        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                if (getItemViewType(position) == 0) {
                    convertView = inflator.inflate(R.layout.file_list, null);
                }

                holder = new ViewHolder();

                holder.textViewName = (TextView) convertView
                        .findViewById(R.id.textView1);
                holder.view = (ImageView) convertView
                        .findViewById(R.id.imageView1);

                convertView.setTag(holder);
                // Set the display text
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.textViewName.setText(fileList.get(position).getFile());

            holder.view.setImageResource((fileList.get(position).getIcon()));

            return convertView;
        }
    }
}

このコードを使用してみてください。動画ファイルを撮影していますが、必要なファイルの種類を指定できます。

于 2012-06-13T08:11:51.260 に答える