2016-04-24 29 views
0

我的应用正在创建一系列图片,我想用用户的图库应用打开该文件夹,以便用户可以观看,打印,共享或执行任何他喜欢的操作。如何通过文件夹上的代码打开永久性手机图库

标准溶液:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
Uri uri = Uri.parse(folder); 
intent.setDataAndType(uri,"*/*"); 
startActivity(Intent.createChooser(intent, "Open folder")); 

打开的手机图库中的文件夹,但如果我点击图片,在galery关闭,而不是显示的图片和活着。

我最亲密的解决方案

Intent gallery = new Intent(Intent.ACTION_MAIN, null); 
gallery.addCategory(Intent.CATEGORY_APP_GALLERY); 
Intent chooser = Intent.createChooser(gallery, "Gallery"); 
startActivity(chooser); 

打开其所有能力的完全成熟的手机图库应用程序,但仅限于它的根文件夹。

如何在特定文件夹上打开完整的图库应用程序,以便在选择图像时不会关闭?一个不错的好处是能够在画廊中打开图片,就好像用户已经启动了幻灯片放映一样。

+0

“如何在特定文件夹上打开完整的图库应用程序,以便在选择图像时不会关闭?” - 最有可能的是,你没有。有数以千计的Android设备模型,包含数百种“图库应用”,以及Play商店和其他地方提供的数百种“图库应用”。没有“请求画廊应用程序让用户浏览文件夹”“意图”,即使有,也不能保证在用户的设备上有一个应用程序可以表示“Intent”。在windows上使用 – CommonsWare

+0

,你可以这样写:explorer.exe“path”。在Linux上,你可以写caja“path”或者nautilus“path”。一般“appname”“路径”。在Andoid中没有相应的路径通过吗? – Kenobi

回答

1

在windows上,你会写:explorer.exe“path”。在Linux上,你会写caja“路径”或鹦鹉螺“路径”

我相当肯定,他们都没有打开一个画廊的应用程序。当然nautilus <path>没有,并且explore.exe <path>没有我最后一次在Windows上尝试它(不可否认,很久以前)。

此外,“Linux”不一定具有nautiluscaja可用。完全可以在没有其中任何一个的情况下进行Linux安装。大多数服务器都没有;我的Ubuntu在这款笔记本上的安装没有caja。某些Linux发行版可能会有不同的功能(例如,无论使用哪种xfce)。所以,在这里我们有一个案例,我们有一个操作系统(Linux),可以用不同的方式以不同的方式重新打包。没有任何意义的人会假设 Linux环境有nautiluscaja

Andoid在路径中是否没有等价物?

TL; DR:正确,没有等价物,特别是对于目录。

首先,正如Linux没有要求具有nautiluscaja一样,Android设备不需要具有图库应用程序,文件浏览器等。只有那些属于核心操作系统的部分几乎保证存在。设备制造商的Android“发行版”与Linux发行版非常相似。其次,Android一直是“停止思考文件和文件夹”的现代模式的一半。对于文件夹尤其如此,因为目录没有MIME类型(file/*黑客并未得到普遍认同)。

第三,虽然有许多标准的Intent结构,但“查看目录的内容”不在其中。

所以:

  • ACTION_GET_CONTENT方法不能保证你也都看到了,作为ACTION_GET_CONTENT does not take a Uri工作,甚至为好。另外,ACTION_GET_CONTENT允许用户选择一段内容,而实施它的那些活动可能会选择反映这一点的用户界面。

  • ACTION_MAIN是为应用程序的“前门”。通常,它与CATEGORY_LAUNCHER一起用于主屏幕启动器图标。并且,如the documentation states, it does not take a Uri or any other form of input

  • ACTION_PICK类似于ACTION_GET_CONTENT,但它确实需要Uri作为参数。如果您使用image/*作为MIME类型,您可能会发现一些可以让用户从该目录中选择图像的活动。但是,与ACTION_GET_CONTENT一样,UI可以倾斜以允许用户挑选某物。并且,没有要求该设备针对file:方案和任何MIME类型具有ACTION_PICK活动的应用程序,更不用说image/*

  • ACTION_VIEW是您如何要求允许用户查看某些内容。但是,这对目录并不理想,因为没有商定的MIME类型。但是,如果某些文件管理器支持file/*方法,我不会感到惊讶。同时,并不要求每个Android设备都有这样的文件管理器,或者任何其他处理这种结构的应用程序。

+0

谢谢你详尽的答案。妥协怎么办:是否有可能检查是否有可用于处理文件/ *的活动,然后开始此活动;否则开始一个后备解决方案(例如你自己的小文件管理器)? – Kenobi

+0

@Kenobi:是的。创建你要传递给'createChooser()'的'Intent'。然后,在'PackageManager'上将'Intent'提供给'resolveActivity()'。如果你从'resolveActivity()'返回'null',那么就没有可能的活动来处理这个请求,所以你可以实现一些回退。如果获得非'null'值,则有1+个活动,您可以继续使用createChooser()工作。 – CommonsWare

相关问题