选择一个pdf并上传到服务器

时间:2017-02-28 05:40:58

标签: android

我无法从内部存储空间,外部存储空间,最近或Google工作表中选择pdf文件。

Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
intent.putExtra("CONTENT_TYPE", "application/pdf");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(intent, FILE_SELECT_CODE);

2 个答案:

答案 0 :(得分:0)

您可以使用Intent.ACTION_OPEN_DOCUMENT

每个文档都表示为一个内容://由DocumentsProvider支持的URI,可以作为包含openFileDescriptor(Uri, String)的流打开,或者查询DocumentsContract.Document元数据。

所有选定的文档都将返回给调用应用程序,并具有可持久的读写权限授予。如果要在设备重新启动后维护对文档的访问权限,则需要使用takePersistableUriPermission(Uri, int)显式获取可持久权限。

调用者必须通过setType(String)指明可接受的文档MIME类型。例如,要选择照片,请使用image / *。如果可以接受多个不相交的MIME类型,请在EXTRA_MIME_TYPESsetType(String)中将其定义为/.

有关详细信息,请参阅此link

请注意,上述内容仅适用于API级别19 +。

另请看一下how to pick few type of file via intent in android?

答案 1 :(得分:0)

试试这个,

    private static final int PICK_FILE = 101;

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("application/pdf");
    intent.addCategory(Intent.CATEGORY_OPENABLE);

    try {
        startActivityForResult(Intent.createChooser(intent, "Select a File"), PICK_FILE);
    } catch (android.content.ActivityNotFoundException ex) {
        // Potentially direct the user to the Market with a Dialog
        Toast.makeText(this, "Please install a File Manager.",
                Toast.LENGTH_SHORT).show();
    }

onActivityResult:

    @Override
    public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);

    switch (reqCode) {

        case PICK_FILE:
            if (resultCode == RESULT_OK) {
                // Get the Uri of the selected file
                Uri uri = data.getData();

                // Get the path
                String path = getPath(mContext, uri);
                Log.d(TAG, "Path: " + path);
                if (path != null && path.contains(".pdf")) {

                } 
            }
            break;
        }
    }

getPath:

    public String getPath(Context context, Uri uri) {
        if ("content".equalsIgnoreCase(uri.getScheme())) {
            String[] projection = {"_data"};
            Cursor cursor;

            try {
                cursor = context.getContentResolver().query(uri, projection, null, null, null);
                assert cursor != null;
                int column_index = cursor.getColumnIndexOrThrow("_data");
                if (cursor.moveToFirst()) {
                    return cursor.getString(column_index);
                } 
                cursor.close();
            } catch (Exception e) {
                // Eat it
            }
        } else if ("file".equalsIgnoreCase(uri.getScheme())) {
            return uri.getPath();
        }
        return null;
    }