具体实施方式
概述
随着应用开发者的激增,计算设备的用户被展现给日益增多的大量的应用。然而,这些应用的可信赖度像编写这些应用的开发者一样变化很大。因此,过去准许没有阻碍地访问的传统的文件系统可能使计算设备受到有缺陷的且甚至是恶意的应用的危害。
描述了应用文件系统访问技术。在实现中,代理模块被利用来管理应用对文件系统的访问,以访问本地文件、联网的计算机和/或被通信地耦合到计算设备的外围设备。例如,代理模块可被配置成促成用户界面的输出。经由用户界面,用户可以验证应用对访问文件系统的请求。这样,代理模块可以帮助用户管理要被准许给在计算设备上执行的应用的访问,并因此进行保护来防御不可信赖的应用。用户界面也可以被配置成包括各种各样不同的视觉启示,以帮助在用户界面内的导航。代理模块和对应的用户界面的进一步讨论可相对于下面的段落而找到。
在以下的讨论中,首先描述可操作来执行这里描述的技术的示例性环境。然后描述在所述示例性环境以及其它环境下可操作的示例性过程。同样地,示例性环境不局限于示例性过程的执行。
示例性环境
图1是在可操作来利用这里描述的文件系统访问技术的示例性实现中的环境100的图解说明。所图示的环境100包括可以以各种各样的方式被配置的计算设备102。例如,计算设备102可被配置为能够通过网络104通信的计算机,诸如台式计算机、移动站、娱乐器具、与显示设备通信地耦合的机顶盒、无线电话、游戏控制台等等。
计算设备102的范围可以从具有大量存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。另外,虽然显示了单个计算设备102,但计算设备102可以代表多个不同的设备,诸如被企业利用来执行操作的多个服务器、遥控器和机顶盒组合、图像捕获设备(例如,照相机)和被配置成捕获手势的游戏控制台等等。
计算设备102还可包括实体(例如,软件),它使得计算设备102的硬件执行操作,例如配置处理器、功能块等等。例如,计算设备102可包括计算机可读介质,其可被配置成维持指令,所述指令使得计算设备,且更具体地是计算设备102的硬件,执行操作。因此,指令发挥作用来配置硬件以执行操作,以及以这种方式导致硬件的转换以执行操作。指令可以由计算机可读介质通过各种各样不同的配置被提供给计算设备102。
计算机可读介质的一个这样的配置是信号承载媒体,且因此被配置成诸如经由网络104 传送指令(例如,作为载波)到计算设备的硬件。计算机可读介质也可以被配置为计算机可读存储介质,且因此不是信号承载媒体。计算机可读存储介质的例子包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及可以使用磁、光和其它技术来存储指令和其它数据的其它存储器设备。
虽然网络104被图示为互联网,但网络可以采用各种各样的配置。例如,网络104可包括广域网(WAN)、局域网(LAN)、无线网、公共电话网、内联网等等。而且,虽然显示了单个网络104,但网络104可以被配置成包括多个网络。
计算设备102被图示为包括文件管理模块106。文件管理模块106代表管理文件系统108的功能性。文件管理模块106可以以各种各样的方式被实施,诸如独立的应用,作为计算设备102的操作系统的一部分等等。
文件系统108利用多种技术来组织和存储相关于计算设备102的文件110。文件系统108例如可以利用文件夹的分级结构来管理在存储装置中的文件110(例如,可执行文件和/或库文件)。文件系统108还可以利用名空间,它提供多种技术来管理上下文,在所述上下文中文件110可以通过使用抽象而被组织。预期有可被文件管理模块106和文件系统108利用的各种各样的其它文件管理技术。
另外,各种各样不同的文件110可以通过使用文件管理模块106而被管理。例如,文件110可被配置为库文件。库文件通常是指由在计算设备102上执行的另一个文件,诸如应用112,所引用的数据单位。因而应用112是可以访问库文件来处理在那里所包含的数据的可执行文件。因此,库文件可以采用诸如文档、插件、脚本等等的各种各样的配置。同样地,应用112也可以采用诸如字处理器、电子表格应用、浏览器等等的各种各样的配置。
文件管理模块106还被图示为包括代理模块114和拣选器(picker)模块116。代理模块114代表用来管理应用112对文件系统108的访问的文件管理模块106的功能性。代理模块114例如可以充当用来定位由应用112请求的文件110和把文件110提供回到应用112的媒介。而且,可以提供文件110,而无需应用112“知道”文件110是从何处获得的,例如,让应用112知道由文件系统108所使用的名空间。
另外,代理模块114可以利用拣选器模块116来配置用户界面,以使得用户可以验证要准许对文件系统108的访问。这样,拣选器模块116可以允许用户验证应用112正在按预期的那样访问文件,这方面的进一步讨论可以相对于图2找到。而且,虽然描述了对于计算设备102来说是本地的对文件110的访问,但文件管理模块106可以管理文件系统108,以控制对于远程文件118的访问,所述远程文件118是通过网络经由服务提供者120(例如,通过使用一个或多个计算设备实施的)、被通信地耦合到计算设备102的外围设备等可访问的。
通常,这里描述的任何的功能可以通过使用软件、固件、硬件(例如,固定的逻辑电路)、人工处理、或这些实现的组合而被实施。当在这里使用时,名词“模块”和“功能性”通常代表硬件、软件、固件或它们的组合。在软件实现的情形下,模块、功能性或逻辑代表执行由硬件,例如一个或多个处理器和/或功能块规定的操作的指令和硬件。
图2是在被配置成执行文件管理的示例性实现中的系统200的图解说明。所图示的系统200可以由计算设备102的文件管理模块106实施,用来执行文件管理技术。例如,文件管理模块106可以作为操作系统的一部分、结合操作系统执行的应用、独立的应用等等被合并。不管在哪里被合并,文件管理模块106都可以利用多种技术来管理计算设备102本地地和/或经由网络104例如从服务提供者120远程地可访问的文件110、118。
所图示的系统200包括第一应用202和第二应用204,它们可以对应于或可以不对应于相对图1描述的应用112。在这个例子中,第一和第二应用202、204都经由一个或多个应用编程接口与代理模块114通信,以便访问文件系统108。
在第二应用204的情形下,已作出确定:对文件系统108的访问是被信任的,或换句话说,第二应用204是可信赖的。例如,第二应用204可以是由声誉好的软件提供者进行编码的,对兼容性进行了测试的,等等。因此,第二应用204可以由代理模块114许可去访问文件系统108,而无需由拣选器模块116验证。
在一个实现中,这个访问被许可,而无需第二应用204“知道”特定的文件110被安排在文件系统108中的何处和/或如何安排。第二应用204例如可以不知道被使用来访问文件系统108中的文件110的名空间。所以,代理模块114可以把经由API接收的、来自第二应用204的请求转换成对于定位感兴趣的文件110来说可理解的形式。这样,代理模块114可以仍旧保护和管理被准许给第二应用204的访问。
在另一个实现中,可以使得第二应用204知道文件110被安排和被定位在文件系统108中的何处和/或如何被安排和被定位。例如,第二应用204可被配置成使用由文件系统108支持的名空间,使得所述请求的转换不是由代理模块114执行。也可以预期有各种各样的其它例子,诸如对于完全可信的应用,使得能直接访问文件系统108,而无需与代理模块114交互。
在图2所图示的例子中第一应用202的情形下,可以作出确定:对文件系统108的访问不被信任,例如,是部分地可信的,或无论如何不被许可的。响应于此,代理模块114可以利用拣选器模块116来验证由第一应用202所请求的对文件系统108的访问。第一应用202例如可以经由一个或多个API把请求传达给代理模块114,以便访问文件系统108。
代理模块114在接收到这个请求后可以实施拣选器模块116,以便生成用户界面206。在本例中,用户界面206被显示为一个部分,其包括关于正在请求什么访问和“什么”正在请求该访问的说明,例如,标识第一应用202。用户界面206还被图示为包括一个选项(例如,“许可访问”按钮),其是可选择的以便许可所请求的访问。拒绝该访问的选项(例如,“拒绝访问”按钮)也被包括在用户界面206中。在用户界面206的该部分内的信息可以被输出,这样使得第一应用202不知道在那里包含了什么,所以不会让它知道所请求的数据的位置。
如果用户选择许可访问的选项(例如,这被图示为通过使用光标控制设备而选择许可访问按钮),则拣选器模块116可以许可对所请求的文件110的访问。各种各样不同类型的访问可以由代理模块114和拣选器模块116单个地或组合地管理。这样的访问的例子包括保存文件110、打开文件110、修改文件110、移动文件110等等。
拣选器模块116可被配置成以这样的方式把经由代理模块114对文件110的访问提供给第一应用202,即:使得第一应用202不知道由文件系统108用来管理文件110的名空间。因此,拣选器模块116可以通过经由用户界面206确认这个访问,而保护文件系统108免于被不可信赖的应用访问。可被使用来与文件系统108交互的用户界面的不同配置的例子可以相对于图3-7找到。
在一个或多个实现中,代理模块114可以监管多个拣选器模块116,每个拣选器模块116被配置成用于多个应用中的相应应用。因此,代理模块114和拣选器模块116可以提供多种技术来管理由第一和第二应用202、204对文件110的访问,而同时减小应用的执行可能危害计算设备102和/或其它计算设备,例如实现图1的服务提供者120的一个或多个计算设备的可能性。
示例性用户界面
以下的段落描述了可以利用先前描述的系统和设备来实施的示例性用户界面。计算设备102例如可以通过在计算设备的硬件上执行指令而输出用户界面206,所述硬件例如是被配置成通过指令执行操作的一个或多个处理器和/或功能块。虽然这些技术被描述来用于通过拣选器模块116的用户界面206的输出,但这些技术可以被各种各样不同的用户界面利用,而不背离其精神和范围。
图3描绘图1的计算设备102的示例性实现300,该计算设备被配置为移动通信设备且输出具有被配置来帮助对文件系统108的访问的视觉启示的用户界面302。如前面描述的,可以输出用户界面302,以提供对文件系统108中的文件110的访问。因此,用户界面302可被配置成支持响应于用户输入的在文件系统108内的导航,这样使得用户可以管理这个访问被如何执行。为了帮助这个导航,用户界面302可以利用各种各样不同的视觉启示。
例如,由拣选器模块116生成的用户界面302可以支持手势来确定在用户界面302中被表示的文件的属性。用户的手304的手指,例如可被放置在文件(例如,“Application—Ellie(应用-埃莉)”)的表示的显示上,以促成在用户界面302中的一个部分306的输出。所述部分306可以描述所表示的文件的属性,诸如作者、大小、类型、创建日期、修改日期、访问日期等等。在一个实现中,所述部分306的输出可以在检测到手势后被“刚好及时地(just-in-time)”执行。手势可以由计算设备102以各种各样的方式来检测,诸如使用触摸屏功能性,一个或多个照相机等等。
用户界面302还包括视觉启示的另一个例子,它可被称为陆标(landmark)。陆标是被包括在用户界面302中的对象,它被配置成描述当前正被显示的一组项目的特征。在所图示的例子中,陆标308是字母“A”,它引用对应于当前正被显示的文件的字母表的一部分。这样,计算设备102的用户可以容易地被告知:用户被定位于用户界面302内的“何处”。因此,这个技术可被使用来容易地通知用户在相当大的一组文件108中的当前位置,这方面的例子可以相对于以下的图找到。
图4将图3的计算设备102的示例性实现400描绘为利用用户界面中的陆标的视觉启示来帮助在文件系统108内的导航。示例性实现是通过使用第一和第二阶段402、404而被举例说明的。
在第一阶段402,陆标308被图示为显示字母“A”,它对应于在用户界面302中文件的当前显示的表示,如相对于图3描述的。用户的手304的手指也被图示为执行摇动(pan)手势,在这种情形下,它涉及用户的手304的手指横过计算设备102的显示设备的 “轻敲-和-滑动(tap-and-slide)”动作,如由箭头所图示的。
在第二阶段404,显示摇动手势的结果。在本例中,用户界面302向上滚动以显示从字母“B”开始的文件。响应于此,陆标308也被拣选器模块116配置成显示字母“B”。在实现中,陆标308 “悬浮”在用户界面302中的文件表示的显示之上,以使得文件的表示可以在陆标308下面滚动,而同时陆标308在用户界面302中保持静止。这样,用户可以容易地确定在一大组文件内的当前位置、当前所显示的一组文件的特征等等。也可以预期有用来指示在一组文件内的当前位置的其它技术,这方面的另外的例子可以相对于以下的图找到。
图5将图1的计算设备102的示例性实现500描绘为利用用户界面中的路标的视觉启示来帮助在文件系统108内的导航。在先前的例子中,陆标308被配置为在用户界面中的单独项目,用来表示由当前在用户界面中显示的项目所共享的特征。在本例中,用户界面502包括路标504、506,它们是从文件本身的表示被配置来指示特征,诸如在用户界面502内的当前位置。
例如,路标504、506的显示特征可以相对于文件的其它表示而改变,以便引起用户的注意。在所图示的例子中,使用了黑粗体,但也可以利用其它显示特征,诸如大小、颜色变化、下划线、加亮突显、使用动画、大小变化等等。因此,所述表示本身的特征可以从在另外的情况下它将已经在用户界面中显示的方式改变。
在所图示的用户界面502中,路标504、506被提供给以匹配的字母开始的、不同组的文件。然而,也可以预期其它的编组,诸如基于文件的类型或是可以由一个或多个文件110共享的其它属性。因此,在本例中,视觉启示(例如,路标)帮助用户找到在用户界面中的位置、确定所表示的各组文件的特征等等。各种各样的其它视觉启示也可以被用户界面502利用来向用户告知关于其中所包含的文件的特征。
一个这样的例子是在用户界面502中的视觉启示,该视觉启示使得文件的表示508显示该文件的内容。在所图示的例子中,所述表示508被图示为指示:文件夹“Brian’s Presentation(布赖恩的呈现)”包括狗的图像。该图像可以取自各种各样不同类型的文件,诸如呈现文件的标题页、图像文件本身等等。另外,各种各样不同的技术可被利用来确定哪个图像是文件夹中的文件的表示,诸如,根据文件夹中该图像的出现次数来检查元数据等等。
图6将图1的计算设备102的示例性实现600描绘为显示利用索引栏604的视觉启示来帮助在文件系统108内的导航。在本例中,用户界面602包括具有文件的表示的部分。用户界面602还包括索引栏604,它被配置成在文件系统108的文件夹之间导航。
例如,索引栏602可包括字母列表,并利用多种技术来指示索引栏604被定位于字母排列中的“何处”。在所图示的实例中,文件夹“Applicants(申请人)”的表示和字母“A”均是黑粗体,虽然也可以利用其它显示特征。
因此在本例中,“何处”的指示描述了在用户界面602中当前被表示的文件的特征,例如,在按字母顺序排列的文件夹中的位置。索引栏604可以以各种各样的方式被导航,诸如通过使用光标控制设备、使用如图示的手势等等来从该栏中选择文件夹和/或字母。虽然在本例中,用户界面602被显示为把索引栏604与被包括在所选文件夹中的表示分开,来执行到文件夹的导航,但索引栏604可以在各种各样不同的用户界面中被利用,诸如在文件本身的表示之间导航。
图7将图1的计算设备102的示例性实现700描绘为显示被配置成保存文件到文件系统的用户界面。在本例中,用户界面702被计算设备102配置成保存文件到文件系统108。用户界面702包括一个部分704,其包括文件的表示,在本实例中它们是图像。汽车的表示被图示为被选择来保存到文件系统108。
用户界面702还包括一个部分706,其被配置成规定关于要被保存的文件的信息,它在本实例中是名称“Eleanor(埃莉诺)”和文件的类型。还显示了软键盘708,它被配置成接收触摸输入,以便把数据输入到保存部分706。这样,用户可以在用户界面内导航,规定要被保存的文件,输入要被使用来保存文件的信息,以及使文件通过与用户界面702的交互而被保存,然而仍旧限制应用112对文件系统108的访问。应用文件系统访问技术的进一步讨论可以相对于以下的过程找到。
示例性过程
以下的讨论描述了可以通过利用先前描述的系统和设备来实施的文件管理技术。各过程中每个过程的诸方面可以以硬件、固件、软件、或它们的组合被实施。过程被显示为一组块,它们规定由一个或多个设备执行的操作,且不是必然地被限于所显示的用于由各个块执行操作的次序。在以下讨论的部分中,将参照图1的环境100和图2-7的用户界面200-700。
图8描绘在其中应用对文件系统的访问被管理的示例性实现中的过程800。由一个或多个模块经由应用编程接口从在计算设备上被执行的应用中接收对于访问计算设备的文件系统的请求(块802)。应用112例如可能希望打开文件、保存文件、修改文件等等。因此,应用112可以经由API把请求传达给代理模块114。
由一个或多个模块展现用户界面中的一个部分,其具有可由用户选择来确认访问要被准许的选项,所述部分被展现成使得应用不知道在所述部分中包含什么(块804)。继续前面的例子,代理模块114可以使得拣选器模块116输出用户界面206。用户界面206被配置成通知用户该访问被请求,以及让用户验证该访问是许可的。用户界面206例如可以描述什么应用正在请求该访问和什么访问正在被请求。
响应于对选项的选择,由该一个或多个模块将访问准许给该应用,以使得该应用不知道访问在文件系统中的何处被准许(块806)。拣选器模块116例如可以通过充当媒介而许可对文件110的访问,这样使得应用不知道由文件系统108使用的名空间。也可以预期有各种各样的其它例子。
图9描绘示例性实现中的过程900,其中一个或多个视觉启示在用户界面中被用做补充支持来帮助在文件系统内的导航。用户界面由计算设备响应于由计算设备执行的应用的请求而被输出,用户界面包括一个或多个视觉启示,其被配置成提供在计算设备的文件系统内的导航,而不使应用能够直接访问文件系统(块902)。各种各样不同的视觉启示可以被用户界面利用,它们的例子可以相对于图3-7找到。这些启示可被利用来在文件系统108内导航,而不允许该应用直接访问文件系统108(例如,通过利用名空间和直接通信),而是间接地,诸如通过代理模块114来访问。
响应于接收到指示在文件系统内的导航的输入,所述一个或多个视觉启示在用户界面中被更新(块904)。在用户为了各种各样不同的目的而在文件系统内导航时,陆标、路标、文件夹、索引栏等等的视觉启示可被更新,诸如显示当前在用户界面中被表示的文件的特征。也预期有各种各样的其它例子。
结论
虽然本发明是以特定于结构特征和/或方法动作的语言进行描述的,但应当明白,在所附权利要求中限定的本发明不是必然地限于所描述的特定的特征或动作。而是,特定的特征和动作是作为实施所要求保护的发明的示例性形式被公开的。