【问题标题】:Can it is possible to allow user for multiple selection of file in storage access framework..?是否可以允许用户在存储访问框架中选择多个文件..?
【发布时间】:2015-06-11 06:20:50
【问题描述】:

点击按钮后,我从提供者那里获取内容

 Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        i.addCategory(Intent.CATEGORY_OPENABLE);
        i.setType("image/*");
        startActivityForResult(i, REQUESTCODE);

现在我想允许用户进行多项选择。可以吗?

【问题讨论】:

  • 您在列表视图中显示您的内容吗?然后只需使用 listview 中的 longclick 功能
  • 根据您的说法,我必须将所有目录中的所有数据都放入一个列表视图中,这将是令人头疼的,并且用户会因滚动选择文件而感到恼火。还有其他方法吗?
  • 您需要澄清您的问题,对于使用多项选择,您通常使用列表视图,因为您需要显示用户可以选择的多个项目,或者您想要什么??
  • 存储访问框架允许多选?我需要它,因为它允许用户直接从目录中选择。
  • 不知道这个框架的细节,但是从google drive等看应该是可以的,只是看你如何呈现结果,因为ContentProvider给你Cursor,你可以显示结果在 ListView GridView 等中,您可以选择多个,但操作仍然必须一对一地完成

标签: android provider


【解决方案1】:

不知道您是否解决了问题,但这是我使用存储访问框架实现多项选择的方法

    Intent filePickerIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    filePickerIntent.setType("*/*");
    filePickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    startActivityForResult(filePickerIntent, REQUEST_CODE);

在Activity Result方法中,只需要迭代Intent参数中的ClipData

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(requestCode == REQUEST_CODE)
    {
        if(data != null)
        {
            ClipData clipData = data.getClipData();
            for(int i = 0; i < clipData.getItemCount(); i++)
            {
                ClipData.Item path = clipData.getItemAt(i);
                Log.i("Path:",path.toString());
            }
        }
    }
}

要在 Storage Access Framework Activity UI 中选择多个文件,只需按住任意项目,就会激活多选。

【讨论】:

  • 应用程序崩溃!此外,我一次只能选择一个文件。仅选择文件后,我按下确定,选择器意图再次出现。这次应用崩溃了!
  • 如果只点击一个文件,clipdata 将为空。检查剪辑数据是否为空,然后继续进行多个文件选择。如果为空则:data.getData()
猜你喜欢
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多