csdn这个功能太差劲了,顶贴也给分,我要结贴。

解决方案 »

  1.   

    看来你应该自己解决了这个问题。
    不用你自己获取文件信息,你只需要在你的应用上注册文件打开方式就可以了,你可自己GOOGLE一下 intent-filter
      

  2.   

    public static final int ACT_RESULT_SCANER = 1;// 二维码扫描后的结果
    public static final int ACT_RESULT_FILE = 2;// 选择文件后的结果
    public static final int ACT_RESULT_ALBUM = 3;// 选择图片后的结果
    public static final int ACT_RESULT_CAMERA = 4;// 拍照后的结果
    public static final int ACT_RESULT_CUT_IMG = 5;// 裁剪图片后的结果
    public static final int ACT_RESULT_CARD_TEMPLET = 6;// 选择名片模板后的结果
    public static final int ACT_RESULT_MSG_SEARCH = 7;// 选择查找消息的条件后的结果/**
     * 弹出选择文件对话框
     * 接收文件重写:public void actResultFile(File file) {}
     */
    public void showFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(Intent.createChooser(intent, "请选择一个文件"), ACT_RESULT_FILE);
    }
    public void actResultFile(File file) {}@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != RESULT_OK) {return;}
    try {
    switch (requestCode) {
    case ACT_RESULT_SCANER:actResultScaner(data.getExtras().getString("result"));break;
    case ACT_RESULT_FILE:actResultFile(fileUtil.getFile(this, data.getData()));break;
    case ACT_RESULT_ALBUM:actResultAlbum(fileUtil.getFile(this, data.getData()));break;
    case ACT_RESULT_CAMERA:actResultCamera(new File(fileUtil.getRoot() + "/temp.jpg"));break;
    case ACT_RESULT_CUT_IMG:actResultCutImg((Bitmap) data.getExtras().getParcelable("data"));break;
    case ACT_RESULT_CARD_TEMPLET:actResultCardTemplet((CardTemplet) beanUtil.jsonToBean(data.getExtras().getString("result"), CardTemplet.class));break;
    case ACT_RESULT_MSG_SEARCH:actResultMsgSearch((Message) beanUtil.jsonToBean(data.getExtras().getString("result"), Message.class));break;
    default:break;
    }
    } catch (Exception e) {
    logOut("onActivityResult", e);
    }
    }/**
     * 根据uri获得sd卡中的文件
     * @param context 容器
     * @param uri 选择的文件
     * @return File
     */
    public File getFile(Context context, Uri uri) {
    if ("content".equalsIgnoreCase(uri.getScheme())) {
    Cursor cursor = context.getContentResolver().query(uri, new String[] { MediaStore.Images.Media.DATA }, null, null, null);
    if (null != cursor && cursor.moveToFirst() && isCardExist()) {
    File file = new File(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)));
    if (file.exists()) {return file;}
    }
    if (null != cursor) {cursor.close();}
    } else if ("file".equalsIgnoreCase(uri.getScheme())) {
    File file = new File(uri.getPath());
    if (file.exists()) {return file;} 
    }
    return null;