首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FilePickerActivity.EXTRA_MODE,FilePickerActivity.MODE_FILE

FilePickerActivity.EXTRA_MODE,FilePickerActivity.MODE_FILE
EN

Stack Overflow用户
提问于 2019-12-14 02:29:08
回答 1查看 67关注 0票数 0

我想从画廊获取视频,但我有一个问题,显示了手机的一般内存,我如何解决它?

代码语言:javascript
复制
 private void selectVideo()
{
    Intent i = new Intent(this, FastScrollerFilePickerActivity.class);

    i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false);
    i.putExtra(FilePickerActivity.EXTRA_ALLOW_CREATE_DIR, false);
    i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_FILE);

    String searchFolder;

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    String fileSearchPath = prefs.getString("fileSearchPath", "last-used");

    switch(fileSearchPath)
    {
        case "last-used":
        default:
            prefs = getSharedPreferences(SHARED_PREFS_KEY, MODE_PRIVATE);
            searchFolder = prefs.getString(PICKER_DIR_PREF, Environment.getExternalStorageDirectory().getPath());
            break;

        case "external":
            searchFolder = Environment.getExternalStorageDirectory().getPath();
            break;
    }

    i.putExtra(FilePickerActivity.EXTRA_START_PATH, searchFolder);
    startActivityForResult(i, SELECT_FILE_REQUEST);
}

我想从画廊获取视频,但我有一个问题,显示了手机的一般内存,我如何解决它?

代码语言:javascript
复制
protected AbstractFilePickerFragment getFragment(@Nullable String startPath, int mode, boolean allowMultiple, boolean allowCreateDir, boolean allowExistingFile, boolean singleClick)
    {
        return getFragment(startPath, mode, allowMultiple, allowCreateDir);
    }

    protected AbstractFilePickerFragment<File> getFragment(
            @Nullable final String startPath, final int mode, final boolean allowMultiple,
            final boolean allowCreateDir) {
        AbstractFilePickerFragment<File> fragment = new FastScrollerFilePickerFragment();
        // startPath is allowed to be null. In that case, default folder should be SD-card and not "/"
        fragment.setArgs(startPath != null ? startPath : Environment.getExternalStorageDirectory().getPath(),
                mode, allowMultiple, allowCreateDir, true, false);
        return fragment;
    }
EN

回答 1

Stack Overflow用户

发布于 2019-12-14 03:01:45

您可以使用以下行启动视频选取器

代码语言:javascript
复制
    startActivityForResult(new Intent(Intent.ACTION_PICK,MediaStore.Video.Media.EXTERNAL_CONTENT_URI),
SELECT_FILE_REQUEST_CODE);

如果你的应用程序崩溃了,它必须在Logcat中留下红色的消息,这对于试图让你理解问题非常有帮助。

现在,在您的onActivityResult方法中,输入以下内容以获取您选择的视频的路径:

代码语言:javascript
复制
public void onActivityResult(int reqCode, int resCode, Intent data){
    if(reqCode == SELECT_FILE_REQUEST_CODE){
      Uri selectedVideo = data.getData();
            String[] filePathColumn = { MediaStore.Video.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedVideo,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String videoPath = cursor.getString(columnIndex);
            cursor.close();
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59328018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档