Privacy aware intent resolution with external sources

Methods for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item are provided. In one aspect, a method includes receiving a selection from a user in an initial application running on a device to interact with a content item accessible by the initial application, and generating a hash value from the limited portion of information on the content item. The method further includes requesting a copy of the at least one suitable application when the comparison of the hash value for the content item with the hash value for the suitable application match, executing the suitable application on the device, and providing the limited portion of information on the content item to the suitable application for interaction by the user. Systems and machine-readable media are also provided.

TECHNICAL FIELD

The present disclosure generally relates to accessing data objects on a device, and more specifically relates to identifying and obtaining a preferred application for accessing a selected data object.

BACKGROUND

When a user of a device selects an item in an initial application running on that device to be viewed, there is a possibility that the content item can be more suitably viewed in a more suitable application other than the initial application, but that the other application may not be available on the device or known to the user. In these instances, the user is commonly required to manually identify the other application that can more suitably view the content item by, for example, searching for the other application (among many possible applications for viewing the content item) in an external source listing, such as an application database (or “application store”).

SUMMARY

According to certain aspects of the present disclosure, a computer-implemented method for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item, the method is provided. The method includes receiving a selection from a user in an initial application running on a device to interact with a content item accessible by the initial application, and generating a hash value from a limited portion of information on the content item. The method also includes comparing a portion of the hash value generated from the limited portion of information on the content item to a corresponding portion of a hash value generated for at least one suitable application available in an application database, and comparing the hash value generated from the limited portion of information on the content item with the hash value generated for the at least one suitable application when the comparison of the portion of the hash value generated from the limited portion of information on the content item to the corresponding portion of the hash value generated for the at least one suitable application indicates a match. The method further includes requesting a copy of the at least one suitable application for execution on the device when the comparison of the hash value generated from the limited portion of information on the content item with the hash value generated for the at least one suitable application match. The method also includes executing the at least one suitable application on the device, and providing the limited portion of information on the content item to the at least one suitable application for interaction by the user.

According to certain aspects of the present disclosure, a system for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item is provided. The system includes a memory comprising a content item and an initial application. The system also includes a processor configured to execute instructions. When executed, the instructions cause the processor to receive a selection from a user in the initial application running on a device to interact with the content item accessible by the initial application, and generate a hash value from a limited portion of information on the content item. The instructions also cause the processor to determine the device does not include a local application suitable for interacting with the content item, and compare a portion of the hash value generated from the limited portion of information on the content item to a corresponding portion of a hash value generated for at least one suitable application available in an application database. The instructions further cause the processor to compare the hash value generated from the limited portion of information on the content item with the hash value generated for the at least one suitable application when the comparison of the portion of the hash value generated from the limited portion of information on the content item to the corresponding portion of the hash value generated for the at least one suitable application indicates a match, and request a copy of the at least one suitable application for execution on the device when the comparison of the hash value generated from the limited portion of information on the content item with the hash value generated for the at least one suitable application match. The instructions also cause the processor to execute the at least one suitable application on the device, and provide a limited portion of information on the content item to the at least one suitable application for interaction by the user.

According to certain aspects of the present disclosure, a non-transitory machine-readable storage medium comprising machine-readable instructions for causing a processor to execute a method for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item is provided. The method includes receiving a selection from a user in an initial application running on a device to interact with a content item comprising a Uniform Resource Locator (URL) accessible by the initial application, and generating a hash value from a host of the URL. The method also includes determining the device does not include a local application suitable for interacting with the content item, and generating, for each of a plurality of applications in an application database, a corresponding hash value using information identifying a host with which the corresponding application from the plurality of applications is configured to interact, wherein the plurality of applications includes at least one suitable application. The method further includes comparing a first predetermined number of bits of the hash value to a corresponding first predetermined number of bits of the hash values for the plurality of applications, and determining that the first predetermined number of bits of the hash value matches at least some of the corresponding first predetermined number of bits of the hash values for at least some of the plurality of applications, the at least some of the plurality of applications comprising the at least one suitable application. The method also includes comparing each bit of the hash value for the content item with each bit of the hash values for the at least some of the plurality of applications, and determining a match between the comparison of each bit of the hash value for the content item with each bit of the hash values for the plurality of applications is limited to each bit of the hash value for the at least one suitable application. The method further includes requesting a copy of the at least one suitable application for execution on the device when the comparison of each bit of the hash value for the content item with each bit of the hash value for the at least one suitable application match, executing the at least one suitable application on the device, and providing a limited portion of information on the content item to the at least one suitable application for interaction by the user using a secure channel.

According to certain aspects of the present disclosure, a system for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item is provided. The system includes means for receiving a selection from a user in an initial application running on a device to interact with a content item accessible by the initial application. The system also includes means for generating a hash value from a limited portion of information on the content item, comparing a portion of the hash value generated from the limited portion of information on the content item to a corresponding portion of a hash value generated for at least one suitable application available in an application database, comparing the hash value generated from the limited portion of information on the content item with the hash value generated for the at least one suitable application when the comparison of the portion of the hash value generated from the limited portion of information on the content item to the corresponding portion of the hash value generated for the at least one suitable application indicates a match, requesting a copy of the at least one suitable application for execution on the device when the comparison of the hash value generated from the limited portion of information on the content item with the hash value generated for the at least one suitable application match, executing the at least one suitable application on the device, and providing the limited portion of information on the content item to the at least one suitable application for interaction by the user.

DETAILED DESCRIPTION

General Overview

The disclosed system provides for identifying, by the system, a most relevant application in an application database (e.g., on a server) to view a content item by comparing a limited portion of information on the content item to information for the available applications in the application database to find an application most suitable for viewing the content item.

Specifically, after the user selects the item (or “abstract intent”), such as a Uniform Resource Locator (URL), in an initial application, such as a web browser, the initial application requests an activity manager running on the device to identify whether a more suitable application (“target”, “app handler”, or “component”) is available on the user's device (“performing runtime binding”) to view (or “resolve intent”) the content item. If a more suitable application is not available on the user's device, the activity manager creates a hash value (“hashed prefix” or “cryptographically hashed abstract intent”) from a limited portion of information on the content item (e.g., a hash of the host of the URL) and provides a portion (e.g., the first n bits) of the hash value to a resolver interface. The resolver interface compares the portion of the hash value for the content item to similar portions of hash values (e.g., the first n bits of a hash of the host of the URL) for available applications in the application database based on the items those available applications can view, and for available applications whose hash value portions (e.g., first n bits of the corresponding hash value) match the portion of the hash value for the content item, the complete hash value corresponding to items (e.g., all bits of the hash of the host of the URL) viewable for the available applications are provided to the activity manager by the resolver interface. The resolver interface then compares the complete hash value for the content item (e.g., all bits of the hash of the host of the URL) and identifies which available application, if any, has a corresponding complete hash value matching the complete hash value for the content item. When an available application is identified that has a matching complete hash value to the complete hash value for the content item, the resolver interface instructs an activity manager on the device to install the available application and provides the content item through a secure channel to the available application for viewing by the user in the available application after installation and execution of the available application. The resolver interface can further provide relevant information identifying parameters by which to launch the available application, such as, for example, where the content item may indicate a certain intent filter for which a certain module or component of the available application should be launched.

The disclosed system addresses a technical problem tied to computer technology and arising in the realm of computer networks, namely the technical problem of, in response to analysis of a selected data object on a device, identifying a preferred software application that is configured to access the data object, and obtain a copy of the preferred application, for example, over a network in order to access the selected data object. The disclosed system solves this technical problem by analyzing a database of possible software applications to identify a software application that is most suitable for accessing the selected data object, and obtaining a copy of the software application over a network if it is not available on the device. The disclosed system provides a solution necessarily rooted in computer technology as it relates to the analysis of a selected data object to identify, and obtain, a suitable software application for accessing the data object. For example, the disclosed system facilitates allowing content items such as URLs from the World Wide Web to become a more integral part of an operating system running on a device by permitting a single external provider check to determine whether to load a new application when the content item is selected. By providing access limited to a portion of a hash value of a content item in order to identify a suitable application, the disclosed solution reduces the amount of information that is accessible to, for example, the resolver interface, regarding a user's activity on a device within the initial application (e.g., URLs requested). As a result, risk to a user's privacy if the resolver interface is compromised is decreased because less information is available to the resolver interface, and it is more difficult to reconstruct the user's activity from the portion of the hash.

Although certain examples provided herein may describe a user's information (e.g., a selection of a data object to be accessed) being stored in memory, each user may grant explicit permission for such user information to be stored. The explicit permission may be granted using privacy controls integrated into the disclosed system. If requested user information includes demographic information, then the demographic information is aggregated on a group basis and not by individual user. Each user may be provided notice that such user information will be stored with such explicit consent, and each user may at any time end having the user information stored, and may delete the stored user information. The stored user information may be encrypted to protect user security.

The user can delete the user information from memory. Additionally, the user can adjust appropriate privacy settings to selectively limit the types of user information stored in memory, or select the memory in which the user information is stored (e.g., locally on the user's device as opposed to remotely a server). In many examples, the user information does not include and/or share the specific identification of the user the user's name) unless otherwise specifically provided or directed by the user. Certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be treated so that no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined.

Example System Architecture

FIG. 1illustrates an example architecture100for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item. The architecture100includes servers130and clients110connected over a network150.

The clients110can be, for example, desktop computers, mobile computers, tablet computers (e.g., including e-book readers), mobile devices (e.g., a smartphone or personal digital assistant set top boxes (e.g., for a television), video game consoles, or any other devices having appropriate processor, memory, and communications capabilities for running an operating system and an initial application that provides access to a content item, such as a URL or document, for display. The initial application, upon selection of the content item, queries the operating system, and a process running on the operating system, such as an activity manager, determines whether another application (to be requested) more suitable than the initial application for interacting with the content item is available either on the client110or over the network150from one of the servers130. If a more suitable application is available on the client110, the activity manager causes the more suitable application to execute on the client110and load the content item. If, however, a suitable application is not available on the client110but available over the network150from a server130, or a more suitable application is available over the network150than an existing application available on the client110, then the activity manager causes the operating system of the client to obtain a copy of the more suitable application on the server130and executes the more suitable application with the loaded content item.

One of the many servers130is configured to host an application database that includes applications configured for interacting with various different types of content items. The database includes, for each application in the database, information on the type(s) of content items with which the corresponding application is configured to interact. The application database on the servers130can be queried by clients110over the network150. For purposes of load balancing, multiple servers130can host the application database either individually or in portions.

The servers130can he any device having an appropriate processor, memory, and communications capability for hosting data encoder service. The network150can include, for example, any one or more of a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a broadband network (BBN), the Internet, and the like. Further, the network150can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, and the like.

Example System for Identifying and Obtaining a Suitable Application for Interacting with a Selected Content Item

FIG. 2is a block diagram illustrating an example server130and client110in the architecture100ofFIG. 1according to certain aspects of the disclosure.

The client110and the server130are connected over the network150via respective communications modules218and238. The communications modules218and238are configured to interface with the network150to send and receive information, such as data, requests, responses, and commands to other devices on the network. The communications modules218and238can be, for example, modems or Ethernet cards. The client110also includes an input device216, such as a touchscreen, keyboard, or mouse, and an output device214, such as a display.

The client110further includes a processor212, the communications module218, and the memory220. The memory220includes an initial application222, a content item224, an activity manager226, a resolver interface228, an installer interface230, and a suitable application240. The suitable application240is illustrated in phantom because it is optionally downloaded to the memory220of the client110from the application database234on the server130after being determined to be suitable for accessing the content item224in the memory220of the client110.

The content item224can be, for example, a URL, a web page, a document such as a text document, a spreadsheet, a media file (e.g., audio, image, video, or any combination thereof), or any other data object configured to be interacted with by a user of the client110. In certain aspects, the content items can be more generic intents such as actions to be performed including, for example, taking a photograph or listening to an audio file. The initial application222can be any application configured to provide access to the content item224, such as a web browser, mobile application, document editor, or image viewer. In certain aspects, the initial application222is limited to providing access to the content item, such as identifying a location of the content item224, but not permitting for the viewing or modification of the content item224by the user.

The activity manager226is a process (e.g., a software extension or facility) running in an operating system of the client110that is configured to receive and respond to requests from applications on the client110regarding access to data objects, such as the content item224, in the memory220of the client110. As described in further detail below, the activity manager226is in certain aspects configured to read configuration values to determine which applications or services are responsive to the resolver interface228and the installer interface230. The activity manager226is also configured to determine whether to enable or disable the resolver interface228and the installer interface230, and to present the ability to manage the resolver interface228and the installer interface230to the user of the client110. The activity manager226is further configured to determine when and for which types of selected content items (e.g., abstract intents) the resolver interface228should be consulted, and then invoking the resolver interface228when appropriate. In certain aspects, certain types of content items can be excluded from evaluation by the resolver interface228, such as certain domains or certain types of files.

The activity manager226is also configured, in certain aspects, for generating a limited portion of information (or “hint”) on the content item224that is provided to the resolver interface228, and for determining how that limited portion of information on the content item224is generated. For example, and as will be detailed further below, if the content item is a URL (e.g., “https://en.websiteencyclopedia.com/diabetes”), the information can be generated by dropping the scheme (e.g., “https”) and path (e.g., “/diabetes”), and retaining only the host (e.g., “en.websiteencyclopedia.com”). The activity manager226can use a hashing algorithm, such as the SHA-256 hashing algorithm, on “en.websiteencyclopedia.com” and select the first 23 bits as the information that is provided to the resolver interface228. Thus, assuming an order O(1B) URL hosts on the Internet, 23 bits would allow for about 100 other hosts to hash to this value of the information.

The activity manager226is yet further configured, in certain aspects, to receive from the resolver interface228a list of applications (or “candidate intent handlers”) responsive to the provided information for the content item224and select the best matching application for the content item224if one exists. Assuming a best match exists, the activity manager226is then responsible for generating a success and failure case for whether the content item224is accessible by the matching application (“pending intents”) and passing them along with an identification of the matching application to the installer interface230for installation.

The resolver interface228, like the activity manager226, is a process running in the operating system of the client110. As described in further detail below, the resolver interface228is configured to receive from the activity manager information about the content item224the user has selected to interact with (e.g., the abstract intent to be resolved), and the resolver interface228returns to the resolver interface228a listing of potential applications to interact with the item (e.g., the set of candidate “app handlers”). The limited portion of information about the content item224can be a portion of a cryptographically hashed abstract intent. In certain aspects, the resolver interface228does not receive the full abstract intent (e.g., an entire URL) of the content item224that the activity manager226is trying to handle. The listing of potential applications to interact with the item can be provided in a data structure format that the operating system of the client110uses internally, such as intent filters. The resolver interface228is intended to respond with low latency (<200 ms) and for implementing caching strategies if server130infrastructure is used. The resolver interface228can be implemented as an application or service residing on the client110.

The installer interface230is yet another process running in the operating system of the client110. As described in further detail below, the installer interface230is configured to receive a request from the activity manager226to install a particular application (e.g., the suitable application240), and in certain aspects include two data structures (e.g., a success intent and a failure intent) corresponding to the success case and the failure case. For example, if the installer interface230succeeds in performing the installation of the suitable application240requested by the installer interface230, the installer interface230then launches the success intent (e.g., in launching the suitable application240). If the installer interface230fails to perform the installation of the suitable application240requested by the activity manager226, the installer interface230may then launch the failure intent, such as a different or default application for interacting with the content item224. In certain aspects, the installer interface230does not receive the full abstract intent (e.g., complete information, such as a copy, of the content item224) from the activity manager226; the installer interface230receives un-inspectable data structures for determination of the success or failure intents.

In certain aspects, both the resolver interface228and the installer interface230are system components that can optionally be required to be system privileged applications. Additionally, in certain aspects, each of the activity manager226, the resolver interface228, and the installer interface230can be disabled by a user so that access of the content item224will occur according to default behavior available on the client110prior to configuration of the disclosed system. Furthermore, in certain aspects, the resolver interface228and the installer interface230can be a single interface, and additionally in certain aspects the activity manager226, the resolver interface228, and the installer interface230can be a single interface. In certain aspects, instead of using a cryptographic hashing function to generate a comparable value for the content item224and the applications from the application database234, other hints regarding the content item224can be used such as, but not limited to, checksums, check digits, fingerprints, randomization functions, error-correcting codes, and ciphers.

The processor212of the client110is configured to execute instructions, such as instructions physically coded into the processor212, instructions received from software in memory220, or a combination of both. For example, the processor212of the client110executes instructions to identify and obtain a suitable application (e.g., the suitable application240) for interacting with the content item224by providing secure access to a limited portion of information on the content item224.

Specifically, the processor212of the client110executes instructions (e.g., from the initial application222) causing the processor212to receive a selection from a user (using the input device216) in the initial application222to interact with the content item224accessible by the initial application222. For example, the user can click on, touch, or otherwise select a link to the content item224that is displayed (using the output device214) in the initial application222. The interaction can be of various kinds including, but not limited to, opening a URL, loading a web page, editing or viewing a document, or scanning a barcode.

The processor212of the client110also executes instructions (e.g., from the activity manager226) causing the processor212to generate a hash value from a limited portion of information on the content item224. The hash value can be generated using various cryptographic hash functions such as, for example, the Secure Hash Algorithm (SHA) 256 hash function (“SHA-256”), which is computed with 32-bit words. For example, in certain aspects where the content item224is a URL, the hash value is generated from a host from the URL.

The processor212of the client110further executes instructions (e.g., from the resolver interface228) causing the processor212to compare a portion of the hash value generated from the limited portion of information on the content item224to a corresponding portion of a hash value generated for at least one suitable application240available in an application database234. The client110is configured to access the application database234on the server130over the network150using the respective communications modules218and238of the client110and server130.

In certain aspects, the hash value generated for the suitable application240available in an application database234is one of a plurality of hash values generated by the processor212for applications in the application database234. Specifically, the processor212of the client110executes instructions (e.g., from the resolver interface228) to generate, for each application in the application database234(including the suitable application240), a corresponding hash value using information identifying content with which the corresponding application from the application database234is configured to interact.

Alternatively, the processor236of the server130is configured to generate the hash values for the applications in the application database234, and the client110may request the generated hash values in order to perform the comparison with the portion of the hash value generated from the limited portion of information on the content item224.

In these aspects, the processor212of the client110also executes instructions (e.g., from the resolver interface228) to compare the portion of the hash value for the content item224to the corresponding portion of the hash values for the applications from the application database234, and determine that the portion of the hash value for the content item224matches at least some of the corresponding portions of the hash values for at least some of the applications from the application database234, including the portion of the hash value for the suitable application240. For example, the first 23 bits of the hash value for the domain of the URL of the content item224is compared to the first 23 bits of each hash value for the domains of URL that are configured to be handled by each application in the application database234, and those applications in the application database234that have matching 23 bit hash values to the 23 bits for the hash of the content item are identified to be applications that may be able to access the content item224. The entire hash value for the content item224(e.g., all bits of the hash) is then compared (e.g., by the processor212of the client110and on the client110) with the entire hash values for the subset of applications from the application database234that were previously determined to have matching portions of hash values, and a match between the comparison of the hash value for the content item224with the hash value for the suitable application240is identified. Specifically, the processor212of the client110further executes instructions (e.g., from the resolver interface228) to compare the hash value (i.e., the complete hash value) for the content item224with the hash value (i.e., the complete hash value) for the suitable application240when the comparison of the portion of the hash value for the content item224to the corresponding portion of the hash value for the suitable application240indicates a match. For example, if the first 23 bits of the hash value for the content item224match the first 23 bits of the hash value for the suitable application240, then all 32 bits of the hash value for the content item224are compared to all 32 bits of the hash value for the suitable application240. In certain aspects, the comparison of the hash value (i.e., the complete hash value) for the content item224with the hash value (i.e., the complete hash value) for the suitable application240is performed on the client110in order to limit access to the compared information by the network150or server130. If a portion of a hash value (e.g., the first 23 bits) for an application in the application database234does not match the portion of the hash value for the content item224, then the application in the application database234is identified as an unsuitable candidate for accessing the content item224.

In certain aspects, the processor212executes instructions from the activity manager226) causing the processor212to, prior to comparing the portion of the hash value to the corresponding portion of the at least one hash value generated for the suitable application240available in the application database234, determine that the client110does not include a local application (e.g., in memory220) for interacting with the content item224. The portion of the hash value generated for the suitable application240is generated by selecting a first predetermined number of bits (e.g., the first 23 bits of a SHA-256 hash) of the complete hash value generated for the suitable application240.

The processor212of the client110yet further executes instructions (e.g., from the resolver interface228) to request a copy of the suitable application240(e.g., by the installer interface230from the application database234) for execution on the client110when the comparison of the hash value (i.e., the complete hash value) for the content item224with the hash value (i.e., the complete hash value) for the suitable application240match. In certain aspects, requesting the copy of the suitable application for execution on the client110includes downloading a copy of the suitable application240to the memory220of the client110(as illustrated inFIG. 2), while in certain aspects requesting the copy of the suitable application240for execution on the client110includes requesting an execution of the suitable application240be streamed to the client110(not illustrated).

As a result, the installer interface230and application database234receive limited information regarding the content item224in order to identify and provide a copy of the suitable application240for execution on the client110for interaction with the content item224. For example, for a URL for an encyclopedia article on diabetes to be viewed by an encyclopedia application, the installer interface230will know it is installing an encyclopedia application to view an encyclopedia article, but the installer interface230will not know the article will be for diabetes.

The processor212of the client110yet further executes instructions from the activity manager226) to execute the suitable application240on the client110(e.g., by running the suitable application240locally or having it streamed from a server), and provides a limited portion of information on the content item224to the suitable application240for interaction by the user. Although by this provision the suitable application240has complete access to the information on the content item224, the access can be secured by having a limited portion of information on the content item224be provided to the suitable application240using a secure channel. For example, when the content item224is a URL, the activity manager226does not divulge the full URL to the resolver interface228or the installer interface230, but instead provides the full URL to the suitable application240via the secure channel after the suitable application240is running on the client110.

In certain aspects, when the comparison of the portion of the hash value for the content item224to the corresponding portion of the hash value for the suitable application240do not indicate a match, or when the comparison of the hash value (i.e., the complete hash value) for the content item224with the hash value (i.e., the complete hash value) for the suitable application240do not indicate a match, then the processor212of the client110is configured to execute instructions (e.g., from the activity manager226) to, as the failure case, obtain and execute (e.g., using installer interface230) a default application from the application database234or execute a default application in the memory220of the client110to access the content item224. The default application can be, for example, the initial application222in which the content item224is initially provided for selection by the user of the client110.

Thus, in certain aspects, when the content item224is selected by the user in the initial application222, the activity manager226instructs the processor212of the client to first load a preferred application for accessing the content item224on the client110if such preferred application exists in memory. If such preferred application does not exist in memory, the activity manager obtains a suitable verified application from the application database234to access the content item224on the client110as described above, and if a suitable verified application is not available, then a suitable unverified application can be obtained instead. If neither a suitable verified or unverified application can be obtained or identified, then a default application can be used to access the content item224, as described above. As discussed herein, a “verified” application includes an application that has been scanned for detection of harmful software code, such as malware.

In certain aspects, in order to reduce any latency between selection of the content item224and an identification of the suitable application240from the application database234as suitable for accessing the content item224, including a network trip required to determine that another application (i.e., the suitable application240) suitable for interacting with the content item224is available in the application database234, caching strategies are implemented in certain aspects of the disclosed system to minimize network roundtrips to take less than, for example, 200 ms, which can be a time limit configured in an operating system of the client110. In these aspects, various data can be cached in the memory220of the client after being generated or received, including, for example, an identification of applications in the application database234and the types of items those applications can interact with, hash values associated with each of the applications in the application database234. This information can be cached on a scheduled, periodic basis, or after every certain number of times the information is requested from the application database234in response to selection of a content item on the client110.

As discussed above, the disclosed system provides two interfaces, the resolver interface228and the installer interface230into the client operating system's intent resolution facility, the activity manager226. The two interfaces228and230are queried during intent resolution for the content item224by the activity manager226for candidate app handlers that are not yet known to the activity manager226. The resolver interface228provides a candidate set of app handlers without knowing the true original abstract intent of the content item224. The installer interface230performs installation for the suitable application240that is requested by the activity manager226and passes along the success or failure intents also without knowing the original abstract intent for the content item224. In this way, the operating system through the activity manager226enables late, runtime binding between code in different applications without revealing the abstract intent to an external source and without requiring that the candidate matches be present within purview of the operating system, and without being present on the client110.

FIG. 3illustrates an example process300for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item using the example client110ofFIG. 2. WhileFIG. 3is described with reference toFIG. 2, it should be noted that the process steps ofFIG. 3may be performed by other systems.

The process300begins by proceeding from beginning step301when a user loads an initial application222on the client110and views a content item224in the initial application222, and proceeds to step302when the initial application222receives a selection from the user to interact with the content item224accessible by the initial application. Next, in step303, the initial application222provides a limited portion of information on the content item224to the activity manager226, and the activity manager226in step304generates a hash value from the limited portion of information on the content item224. In step305the activity manager226provides a portion of the hash value of the content item224to the resolver interface228.

Turning to the resolver interface228, in step306, the resolver interface228compares the portion of the hash value of the content item224to a corresponding portion of at least one hash value generated for an application (i.e., the suitable application240) available in the application database234, and in step307if the comparison of step306indicates the portion of the hash value of the content item224matches a corresponding portion of at least one hash value generated for an application (i.e., the suitable application240) available in the application database234, the process300proceeds to step308. Otherwise, the process300proceeds to step314where the initial application222as a failure intent provides access to the content item224in the initial application222, after which the process300ends in step315. In certain aspects not illustrated, in step314the content item224can be accessed in a different application on the client110that is configured for accessing the content item224.

Returning to step308at the resolver interface228, when the portion of the hash value of the content item224matches a corresponding portion of at least one hash value generated for an application (i.e., the suitable application240) available in the application database234, the resolver interface228provides the hash value (i.e., the entire hash value) generated for the suitable application240to the activity manager226. In step309, the activity manager226compares the hash value (i.e., the entire hash value) for the content item224with the hash value (i.e., the entire hash value) for the suitable application240. If, however, the portion of the hash value for the content item224does not match the corresponding portion of a hash value generated for an application in the application database234, then the application in the application database234is identified as an unsuitable candidate for accessing the content item224. In step310, if the comparison of the hash value for the content item224with the hash value for the suitable application240match, then the process300proceeds to step311, otherwise the process300proceeds to step314discussed above.

In step311, when the hash value for the content item224with the hash value for the suitable application240match, the activity manager226requests a copy of the suitable application240for execution on the client110, and in step312the suitable application240executes on the client110. In step313, the activity manager226provides a limited portion of information on the content item224to the suitable application240for interaction by the user, and the process300then ends in step315.

FIG. 3sets forth an example process300for identifying and obtaining a suitable application for interacting with a selected content item by providing secure access to a limited portion of information on the selected content item using the example client110ofFIG. 2. An example will now be described using the example process300ofFIG. 3, a client110that is a smartphone, an initial application222that is a web browser, a content item224that is a link to a web page for the city Anytown on a travel website TripTrip, and a suitable application240that is a TripTrip application available from the travel website TripTrip for installation and execution on the smartphone client110.

The process300begins by proceeding from beginning step301when a user loads a web browser application222on the smartphone client110and receives search results that include a URL for a link item224to a web page for the city Anytown on a travel website as provided in the example illustration400ofFIG. 4B, and proceeds to step302when the user selects the link item224in the web browser application222. Next, in step303, the web browser application222provides information on the link item224to the activity manager226, and the activity manager226in step304generates a SHA-256 hash value from the domain “www.triptrip.com” of the URL of the link item224. In step305the activity manager226provides the first 23 bits of the SHA-256 hash value for the domain of the link item224to the resolver interface228.

Turning to the resolver interface228, in step306, the resolver interface228compares the first 23 bits of the SHA-256 hash value for the domain of the link item224to the corresponding first 23 bits of a SHA-256 hash value for the web domain of each application (including the TripTrip application240) available in the application database234lists the corresponding application is suitable for accessing. In step307the comparison of step306indicates the portion of the SHA-256 hash value for the domain of the link item224matches the corresponding portion of the SHA-256 hash value generated for the TripTrip application240available in the application database234, and the process300proceeds to step308at the resolver interface228.

In step308, the resolver interface228provides the entire hash value generated for the TripTrip application240(i.e., all of the bits) to the activity manager226. In step309, the activity manager226compares all of the bits of the hash value (e.g., for the domain) of the link item224with all of the bits of the hash value for the domain that can be handled by the TripTrip application240. In step310, the comparison of all of the bits of the SHA-256 hash value for the domain of the link item224with all of the bits of the SHA-256 hash value for the domain handled by the TripTrip application240match, and the process300proceeds to step311.

In step311, the activity manager226requests a copy of the TripTrip application240for execution on the client110, which the installer interface230requests from the application database234and installs, and in step312the TripTrip application240executes on the smartphone client110. In step313, the activity manager22.6provides the complete URL for the link item224to the TripTrip application240for interaction by the user and the appropriate content is loaded in the TripTrip application240as provided in the example illustration410ofFIG. 4B. If, however, the process300had proceeded to step314from either step307or step310, then the link item224would be provided for display in the web browser application222as provided in the example illustration420ofFIG. 4C. The process300ends in step315.

Hardware Overview

FIG. 5is a block diagram illustrating an example computer system500with which the client110and server130ofFIG. 2can be implemented. In certain aspects, the computer system500may be implemented using hardware or a combination of software and hardware, either in a dedicated server, or integrated into another entity, or distributed across multiple entities.

Computer system500(e.g., client110and server130) includes a bus508or other communication mechanism for communicating information, and a processor502(e.g., processor212and236) coupled with bus508for processing information. According to one aspect, the computer system500is implemented as one or more special-purpose computing devices. The special-purpose computing device may be hard-wired to perform the disclosed techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques. By way of example, the computer system500may be implemented with one or more processors502. Processor502may be a general-purpose microprocessor, a microcontroller, a Digital Signal Processor (DSP), an ASIC, a FPGA, a Programmable Logic Device (PLD), a controller, a state machine, gated logic, discrete hardware components, or any other suitable entity that can perform calculations or other manipulations of information.

Computer system500can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them stored in an included memory504(e.g., memory220and232), such as a Random Access Memory (RAM), a flash memory, a Read Only Memory (ROM), a Programmable Read-Only Memory (PROM), an Erasable PROM (EPROM), registers, a hard disk, a removable disk, a CD-ROM, a DVD, or any other suitable storage device, coupled to bus508for storing information and instructions to be executed by processor502. The processor502and the memory504can be supplemented by, or incorporated in, special purpose logic circuitry. Expansion memory may also be provided and connected to computer system500through input/output module510, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory may provide extra storage space for computer system500, or may also store applications or other information for computer system500. Specifically, expansion memory may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory may be provided as a security module for computer system500, and may be programmed with instructions that permit secure use of computer system500. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.

Computer system500further includes a data storage device506such as a magnetic disk or optical disk, coupled to bus508for storing information and instructions. Computer system500may be coupled via input/output module510to various devices. The input/output module510can be any input/output module. Example input/output modules510include data ports such as USB ports. In addition, input/output module510may he provided in communication with processor502, so as to enable near area communication of computer system500with other devices. The input/output module510may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used. The input/output module510is configured to connect to a communications module512. Example communications modules512(e.g., communications modules218and238) include networking interface cards, such as Ethernet cards and modems.

The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. The communication network (e.g., network150) can include, for example, any one or more of a PAN, a LAN, a CAN, a MAN, a WAN, a BBN, the Internet, and the like. Further, the communication network can include, but is not limited to, for example, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, or the like.

For example, in certain aspects, communications module512can provide a two-way data communication coupling to a network link that is connected to a local network. Wireless links and wireless communication may also be implemented. Wireless communication may be provided under various modes or protocols, such as GSM (Global System for Mobile Communications), Short Message Service (SMS), Enhanced Messaging Service (EMS), or Multimedia Messaging Service (MMS) messaging, CDMA (Code Division Multiple Access), Time division multiple access (TDMA), Personal Digital Cellular (PDC), Wideband CDMA, General Packet Radio Service (CPRS), or LTE (Long-Term Evolution), among others. Such communication may occur, for example, through a radio-frequency transceiver. In addition, short-range communication may occur, such as using a BLUETOOTH, WI-FI, or other such transceiver.

In any such implementation, communications module512sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. The network link typically provides data communication through one or more networks to other data devices. For example, the network link of the communications module512may provide a connection through local network to a host computer or to data equipment operated by an Internet Service Provider (ISP). The ISP in turn provides data communication services through the world wide packet data communication network now commonly referred to as the Internet. The local network and Internet both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link and through communications module512, which carry the digital data to and from computer system500, are example forms of transmission media.

Computer system500can send messages and receive data, including program code, through the network(s), the network link and communications module512. In the Internet example, a server might transmit a requested code for an application program through Internet, the ISP, the local network and communications module512. The received code may be executed by processor502as it is received, and/or stored in data storage506for later execution.

In certain aspects, the input/output module510is configured to connect to a plurality of devices, such as an input device514(e.g., input device216) and/or an output device516(e.g., output device214). Example input devices514include a keyboard and a pointing device, e.g., a mouse or a trackball, by which a user can provide input to the computer system500. Other kinds of input devices514can be used to provide for interaction with a user as well, such as a tactile input device, visual input device, audio input device, or brain-computer interface device. For example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, tactile, or brain wave input. Example output devices516include display devices, such as a LED (light emitting diode), CRT (cathode ray tube), LCD (liquid crystal display) screen, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, for displaying information to the user. The output device516may comprise appropriate circuitry for driving the output device516to present graphical and other information to a user.

According to one aspect of the present disclosure, the client110and server130can be implemented using a computer system500in response to processor502executing one or more sequences of one or more instructions contained in memory504. Such instructions may be read into memory504from another machine-readable medium, such as data storage device506. Execution of the sequences of instructions contained in main memory504causes processor502to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in memory504. In alternative aspects, hard-wired circuitry may be used in place of or in combination with software instructions to implement various aspects of the present disclosure. Thus, aspects of the present disclosure are not limited to any specific combination of hardware circuitry and software.

As used in this specification of this application, the terms “computer-readable storage medium” and “computer-readable media” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals. Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus508. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. Furthermore, as used in this specification of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device.

To the extent that the term “include,” “have,” or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the term “comprise” as “comprise” is interpreted when employed as a transitional word in a claim. Phrases such as an aspect, the aspect, another aspect, some aspects, one or more aspects, an implementation, the implementation, another implementation, some implementations, one or more implementations, an embodiment, the embodiment, another embodiment, some embodiments, one or more embodiments, a configuration, the configuration, another configuration, some configurations, one or more configurations, the subject technology, the disclosure, the present disclosure, other variations thereof and alike are for convenience and do not imply that a disclosure relating to such phrase(s) is essential to the subject technology or that such disclosure applies to all configurations of the subject technology. A disclosure relating to such phrase(s) may apply to all configurations, or one or more configurations. A disclosure relating to such phrase(s) may provide one or more examples. A phrase such as an aspect or some aspects may refer to one or more aspects and vice versa, and this applies similarly to other foregoing phrases.