Patent Publication Number: US-9417753-B2

Title: Method and apparatus for providing contextual information between operating system environments

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present disclosure is related to copending U.S. patent application Ser. No. 13/462,523, filed on May 2, 2012, entitled, “METHOD AND APPARATUS FOR DISPLAYING DATA FROM A PLURALITY OF CONCURRENT OPERATING SYSTEM ENVIRONMENTS,” and U.S. patent application Ser. No. 13/462,529, filed on May 2, 2012, entitled, “METHOD AND APPARATUS FOR DISPLAYING ACTIVE OPERATING SYSTEM ENVIRONMENT DATA WITH A PLURALITY OF CONCURRENT OPERATING SYSTEM ENVIRONMENTS,” both of which are assigned to the same assignee as the present application, and both of which are hereby incorporated by reference herein. 
     FIELD OF THE DISCLOSURE 
     The present disclosure relates generally to operating systems and operating system environments. 
     BACKGROUND 
     Various operating systems provide features and applications that are often specific to the given operating system. For this reason, it has become useful for computing devices, including handheld mobile devices, to be capable of running more than one operating system environment. By running more than one operating system environment on a device, users are able to access the features and applications associated with each of the operating system environments, thereby enhancing the capabilities and functions of the device. 
     In the past, virtualization techniques have been used to accomplish running multiple operating system environments; however such approaches require emulation of an entire machine which is resource intensive. Systems have now been developed that enable actual running of multiple operating system environments without the need for such resource intensive machine emulation. Such systems utilize a common kernel where the operating system environments may be considered middleware, in that, some services related to the various applications may be supported within the confines of the environment. Therefore, in these systems, the operating system environments co-exist independently, and do not require virtualization as in the past. Devices supporting these multiple environments therefore enable users to access and enjoy the features of the operating systems and their associated data such as applications. 
     Nevertheless, some demarcation between the operating system environments must exist for the purpose of presentation to the device user. The environments usually provide their own unique approach to how associated data is displayed by the operating system. In some cases, the user may be compelled to switch display views in order to work with one or another operating system environment. Being forced to switch views in this manner negatively impacts user experience because the work or operating contexts in which the user was engaged can be lost or muddled among the various views. Furthermore, any given operating system environment will not understand, and therefore will be incapable of interpreting, data associated with a different operating system environment and any associated data or working context. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a mobile device display with a display image having various image content associated with a first operating system environment. 
         FIG. 2  is block diagram of a display having a combined image employing at least two different operating system environments concurrently. 
         FIG. 3  is a block diagram illustrating an example of a drag-and-drop interoperability operation in accordance with the embodiments. 
         FIG. 4  is diagram of an apparatus with a plurality of operating system environments, a single kernel and interoperability logic in accordance with an embodiment. 
         FIG. 5  is flowchart illustrating high level operation of the embodiments. 
         FIG. 6  is a flowchart illustrating details of operation of one embodiment. 
         FIG. 7  is a flowchart illustrating recognizing data as a known file type, in accordance with various embodiments. 
         FIG. 8  is a flowchart illustrating recognizing an application file in accordance with various embodiments. 
         FIG. 9  is a flowchart illustrating recognizing a widget in accordance with various embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     The disclosed embodiments provide better interoperability between multiple operating system environments. The embodiments include providing contextual information about data from one operating system environment to another operating system environment. As a result, the user experience in working with multiple operating system environments is enhanced. For example, a user may download an application file for a first operating system environment, using a browser application of a second operating system environment. Unlike previous systems, the user can drag-and-drop the application file from the browser of the second operating system environment, to a desktop (home screen or wallpaper, etc.) of the first operating system environment. The first operating system environment obtains contextual data so that the application file can be installed in place, and/or launched, on the display portion associated with the first operating system environment. 
     The embodiments disclosed provide a method which includes providing data and contextual information for the data, to a first operating system environment by a second operating system environment. Both operating system environments utilize a common kernel. The data is associated with the first operating system environment which utilizes the data based on the contextual information. The method may include installing the data as an application file by the first operating system environment, where the first operating system environment is informed that the data is the application file by the contextual information. The method may include obtaining the data associated with the first operating system environment by the second operating system environment, by downloading the data via a browser application of the second operating system environment. The data may be an application file for an executable application, a widget, a video, or any other type of data file. 
     The method may include moving the data, in response to user interface input, from the second operating system environment to the first operating system environment and providing the contextual information for the data in response to moving the data. For example, the user may move an icon associated with the data, using drag-and-drop selection input, cut and paste selection input, etc. 
     The method may also include displaying, on a display, at least one application window associated with the second operating system environment, and at least one icon, representing the data, located within the at least one application window, the icon selectable by drag-and-drop selection input, and providing the data, and the contextual information for the data, to the first operating system environment in response to drag-and-drop selection input to drag-and-drop the icon from the at least one application window to a desktop of the first operating system environment. 
     The embodiments include an apparatus that has at least one programmable processor, and memory operatively coupled to the programmable processor. The memory contains executable instructions, that when executed cause the programmable processor to provide a first operating system environment and at least a second operating system environment, with both operating system environments utilizing a common kernel. The second operating system environment is operative to provide data and contextual information for the data, to the first operating system environment. The first operating system environment is operative to utilize the data based on the contextual information. 
     The first operating system environment is also operative to utilize the data by installing the data as an application file. The first operating system environment is informed by the contextual information, that the data is the application file. 
     The second operating system environment is operative to obtain the data associated with the first operating system environment by downloading the data via a browser application of the second operating system environment. The data may be moved between operating system environments, in response to user interface input, from the second operating system environment to the first operating system environment which also provides the contextual information for the data in response to moving the data. The data may be moved by, for example, drag-and-drop selection input to drag-and-drop an icon associated with the data. 
     The apparatus may include a display, operatively coupled to the at least one programmable processor. The display is operative to display at least one application window associated with the second operating system environment, and at least one icon, representing the data, located within the at least one application window, where the icon is selectable by drag-and-drop selection input. The programmable processor is further operative to provide the data, and the contextual information for the data, to the first operating system environment in response to drag-and-drop selection input to drag-and-drop the icon from the at least one application window to a desktop of the first operating system environment. 
     The embodiments also include a computer readable, non-volatile, non-transitory memory, storing executable instructions for execution by at least one processor, that when executed cause the at least one processor to perform the various methods and operations of the embodiments as described above. 
     Turning now to the drawings wherein like numerals represent like components,  FIG. 1  illustrates a mobile device  101 , which includes an integrated display  103 . The integrated display  103  may display a background image, such as live wallpaper  105 , shown as a dotted line around the perimeter of the display  103 . The mobile device  101  may also be capable of displaying various home screens that provide for organization of application icons  107 . The home screens may allow the user to launch an application within the perimeter of the home screen, by, for example, clicking a mouse cursor on one of the desired application icons  107 . Additionally, scrolling to another home screen may also allow scrolling between such launched applications. In any case, the live wallpaper  105 , is associated with a first operating system environment, and may provide active image content. For example, a widget  109  may provide real time information to the user. One example of a widget  109  is a clock widget which provides the time. The home screens, and/or various visual image objects such as icon  107  or widget  109  present in a home screen, may be moved about using a graphical user interface (GUI), that may include touch screen functionality, a track ball, or any other suitable user interface for selecting and moving image objects. The background image, which may be the live wallpaper  105 , remains active during any user interactions. In other words, the live wallpaper  105  may be viewed as a representation of the associated first operating system environment, which may be a Linux® based operating system environment such as, but not limited to, Android™, Ubuntu®, etc. 
     The mobile device  101  may interact with a larger display  201  as shown in  FIG. 2 . The larger display  201  may provide an enhanced user experience by allowing the user of mobile device  101  to have better a better view of various applications, etc. For example, the larger display  201  may display various icons  211 , widgets  207 ,  209 , application windows  213 ,  215 , and a toolbar  205 . The display image may include a background image, referred to herein as live wallpaper  203 . The live wallpaper  203  is associated with a first operating system environment of mobile device  101 . Some of the image objects displayed on (or hovering over) the live wallpaper  203 , may be associated with a second, third, etc., operating system environment. The mobile device  101  may use one or more operating system environments together, or launch additional operating system environments as needed. Therefore, the display  201  may display a combined image providing information from one or more operating system environments. In the example of  FIG. 2 , the live wallpaper  203 , icons  211 , and widgets  207 ,  209 , are associated with a first operating system environment of the mobile device  101 . The toolbar  205  and application window  213  and  215 , are associated with a second operating system environment. The application windows  213  and  215  are overlaid on, or in other words, hover over, the live wallpaper  203  of the first operating system environment. 
     The term “display” as used herein refers to a device that displays “display data” to form an image or images, such as, but not limited to, a picture, a computer desktop, a gaming background, a video, an application window etc. Examples of a display include a television, computer monitor, etc., or an integrated display as found in electronic devices such as a laptop computer, handheld computing device, mobile telephone, PDA, etc. The display device may employ any appropriate display technology, such as for example, a CRT, LCD flat panel, LED flat panel, plasma screen, etc. 
     The terms “screen,” “home screen,” and “workspace” are used interchangeably in reference to an “image” which refers generally to what is “displayed” on a display. That is, an image, including a “screen,” “home screen,” and/or “workspace” may be displayed on a display. Examples of images include, but are not limited to, a computer desktop (i.e. a background), a gaming background, a video, an application window, an icon, a widget, etc., including also the active or live wallpaper described herein. In other words, the term “image” may refer to a background, or may refer individually, or collectively, to elements or objects in the foreground, of hovering over, a background image such as the live wallpaper. The term “display data” is used interchangeably herein with the term “image data” and refers to the information (data, or digital information) that the display interprets and/or decodes to show (i.e. to display) the user an image such as a workspace or home screen, as well as any associated elements or objects in the foreground of home screens or workspaces, or the live wallpaper, etc. 
     The term “data” as used herein, and in contrast to “display data,” may refer to files (i.e. data files) such as executable application files, widgets, video files, documents, photographs, etc. without limitation, or to text data, such as, for example, words copied and pasted from a document. 
     In the example of  FIG. 2 , the display  201  displays a combined image that includes display data from a first operating system environment and a second operating system environment. A live wallpaper  203  is displayed that represents the first operating system environment and is active or “live,” in that, real time operating system information may be provided. In one example, an active or live widget  207 , associated with the first operating system environment may provide real time information to the user. An example of an active or live widget is a clock application that provides the time. As shown in  FIG. 2 , an application window  213  associated with a second operating system environment may be positioned, and/or moved by the user on and about the live wallpaper  203 . In the example of  FIG. 2 , the application window  213  is shown hovering above a live widget  207  as well as various other widgets  209  that are associated with the first operating system environment. The live widget  207  and any of the other widgets  209  that are active or “live,” would remain in an active state, even if covered over by images associated with the second operating system. That is, the live widget  207  will remain active even though the application window  213  is in “focus,” i.e. is active and being used, and partially (or completely) covers over the widget  207  image as shown in  FIG. 2 . Put another way, the first operating system environment, as represented by the live wallpaper  203 , is always running behind the second (or any other) operating system environment. The second operating system environment may be interacted with through windows such as application windows  213  and  215 . These windows are resizable by the user as illustrated by window  213  which is expanded versus window  215  which is shown reduced in size, on the display. 
     As mentioned briefly above, the mobile device  101  first operating system environment may provide various “home screens” that enable the user to organize application icons  107  and widgets  109 . In other words, various icons and widgets may be distributed between various home screens. The background image, i.e. live wallpaper  105  as shown in  FIG. 1 , may include home screen objects (i.e. icons  107  and widget  109 ), that are associated with one of several home screens. The combined image displayed on display  201 , will include all icons, widgets, etc., from all of the home screens. For example, icons  211  and widgets  207 ,  209  are shown collectively on the combined image displayed on display  201 . However, if displayed on the integrated display  103  of the mobile device  101 , the icons  211  and widgets  207 ,  209  would be distributed according to their corresponding home screens as configured by the mobile device  101  user. 
     The home screens of the first operating system environment may be mapped to workspaces of the second operating system environment. In this example, the live wallpaper  203 , as illustrated generally by the dotted line within the perimeter of the display  201 , may show a home screen of the first operating system environment. In this example, only the icons  211  and widgets  207 ,  209  that the user associated with the displayed home screen would be displayed. Likewise, the windows  213  and  215  may be associated with a workspace of the second operating system, and that workspace may be mapped with the given home screen. In this case, only windows for the given workspace would be shown, along with image objects for the mapped home screen. That is, the combined display may show only those image objects which the user associated with the mapped workspace/home screen. The user may switch (i.e. toggle), or scroll, away from one workspace/home screen, and back again to, for example, the workspace/home screen of the combined image shown in  FIG. 2 . However, in any of these examples, the live wallpaper  203  remains active. Active widgets, such as widget  207  remain fixed to the live wallpaper  203 . In this case, the workspace/home screens may be viewed as hovering above the live wallpaper  203  and any fixed active widgets. 
     The various embodiments are best understood with reference to  FIG. 3  and  FIG. 4 .  FIG. 3  illustrates a display  301  similar to the display illustrated in  FIG. 2 . That is, the display  301  provides a desktop  303  which may be live wallpaper as described above. The desktop  303  or live wallpaper may have various icons  309 , widgets  311 , and application windows  307 ,  313  positioned either upon, or hovering above, the desktop  303 . For example, the desktop  303  may be associated with the first operating system environment. The application windows  307  and  313  may be associated with a second operating system environment, and may hover over the desktop  303 . The icons  309  and widgets  311 , may also be associated with the first operating system environment and may be fixed to the desktop  303  or may hover over it in some embodiments. A toolbar  305  may also be provided, that may be associated with either the first or second operating system environment. 
     In accordance with the embodiments, the application window  307  may be a browser application window, associated with the second operating system environment. Accordingly, the user may download data, such as a widget  317 , using the browser application. The widget  317  in the example of  FIG. 3 , is a “clock.apk” file which is a clock widget associated with the first operating system environment. The user may use a mouse cursor  315 , or alternatively touch screen functionality, to drag-and-drop the widget  317  icon from the browser application window  307  to the desktop  303 . The dashed arrow  321  is provided in  FIG. 3  to illustrate the movement of the data, (i.e. the data file represented by widget  317  icon), from the browser application window  317  to the desktop  303 . By moving the widget  317  icon to the desktop  303 , the first operating system environment receives contextual information informing the first operating system environment that the data is the clock widget application file (i.e. an “.apk” file). The first operating system environment will therefore, in accordance with the embodiments, install the clock widget  317  “.apk” file in place (i.e. where “dropped” onto the desktop  303 ) as installed clock widget  319 , and launch it. In some embodiments, the first operating system environment will also launch an options window, if present in the application, to enable the user to select options or set preferences, accordingly. 
     Examples of contextual information include, but are not limited to, location on the display screen where data is dropped (such as by a drag-and-drop operation), a file extension, meta data, etc. In other words, contextual information provides information related to data (such as text, a file, etc.) to an operating system environment, such that the operating system environment is enabled to take appropriate action related to the data. In the clock widget  319  example discussed above, the second operating system environment may provide to the first operating system environment, as the contextual information, the “.apk” file extension, a pixel location on the desktop where the file is dropped, file meta data, and/or other information to the first operating system environment. Because a “.apk” file extension is a file type associated with the first operating system environment, the first operating system environment will accordingly treat the data provided by the second operating system environment as an installable “.apk” file. Additionally, the first operating system environment, or more specifically, the operating system environment that receives the data, may also read and interpret any other received contextual information such as metadata to determine what to do with the data. As mentioned above, the operating system environment that receives the data and contextual information may receive a pixel location on the display screen where the data is dropped. The receiving operating system environment may interpret the pixel location and determine that the data has been dropped on the desktop. By also having the contextual information informing the receiving operating system environment that the file is a “.apk” file, the receiving operating system environment will accordingly install the “.apk” file in place on the desktop as a widget. 
     Additionally, in some embodiments a receiving operating system environment may obtain the contextual information based on the activity or action that occurs between the receiving operating system environment and the sending operating system environment. For example, text that is pasted to the desktop of the receiving operating system environment may be immediately interpreted as a request to perform a search based on the text. In another example, digits cut and pasted from one operating system environment to a dialer application of a receiving operating system environment may immediately be interpreted as a request to dial the digits to establish a phone call or to send a fax. Various other examples, in accordance with the embodiments, may be envisioned by those of ordinary skill based on the description provided above. 
     Among the advantages of the embodiment illustrated by  FIG. 3 , user experience is enhanced because the user can use a desired browser of the second operating system environment to obtain applications or widgets for the first operating system environment, and install and run them in a straightforward and seamless manner by using drag-and-drop. That is, the embodiments enhance interoperability of multiple operating system environments. 
       FIG. 4  illustrates a block diagram of an apparatus  400  in accordance with various embodiments. For example, the apparatus  400  may include a mobile device  401  operatively connected via a communication bus  429  to a peripheral device  427  that may include a display  425 . The mobile device  401  includes programmable processor  403  (i.e. a CPU) and graphics processing unit (GPU)  415 , which are operatively coupled via a communication bus  413 . The communication bus  413  may run throughout the mobile device  401 , providing operative coupling to the various components and circuitry contained within the mobile device  401 . Therefore, in accordance with embodiments, device components, circuitry, and the like, may be operatively coupled via the communication bus  413 . In other words, various intervening device components, circuitry, and the like, may exist in between, and/or along, the communication path between any two or more operatively coupled components. As shown in  FIG. 4 , the programmable processor  403  is operatively coupled by the communication bus  413  to memory  411  and to a user interface (UI)  423 . The memory  411  is in turn operatively coupled, via the communication bus  413 , to hardware  419  that drives an integrated display  421 . The integrated display  421  is operatively coupled to hardware  419  via the same communication bus  413 . The display  421  serves as a graphical user interface (GUI) of the mobile device  401 . Therefore, the display  421  also interfaces with, and is operatively coupled to, the programmable processor  403  via the communication bus  413  as part of the UI  423 . The UI  423  may include a track ball mouse, touch sensitive elements, physical switches, gyroscopic position sensors, etc. The display  421  may provide a touchscreen functionality that is also therefore operatively coupled, via the communication bus  413 , to the user interface  423 . That is, the display  421  may provide a graphical user interface with touchscreen capability in addition to cursor control click to provide selection input and/or drag and drop input functionality. 
     In accordance with the embodiments, the programmable processor  403  may run various operating system environments  407 , such as operating system environment  1 , operating system  2  environment, and so on through an N-th operating system environment. In other words, the programmable processor  403  is operative to run one or more of the various operating system environments  407 , concurrently. The plurality of operating system environments  407  are each completely autonomous and can exist and function independently from one another. One or more of the operating system environments may be run concurrently, and each operating system environment utilizes a common kernel  405 . In other words, each one of the operating system environments is completely autonomous and may exist and function completely independently, without any of the other operating system environments being executed. The operating system environments provide “environments,” in that, for example, all necessary libraries, toolkits, windowing, etc., is present within the environment to enable an application associated with the operating system environment to function. The common kernel  405  provides fundamental interaction at the hardware level of mobile device  401 . For example, the common kernel  405  may provide required operating system tasks such as program loading, system resource allocation, handling device input and output, and some memory management functions. The common kernel  405  may be created as an object-oriented design that can interface, and enable communication with, programming objects within the various operating system environments  407 . 
     Examples of operating system environments include, but are not limited to, Android™, Ubuntu®, other Linux® based operating systems, etc. In one example embodiment, the mobile device  401  may be connected to the peripheral device  427  by way of a docking port that provides the communication bus  429 . In this example, the mobile device  401  display data may be shown on display  425  which may be larger in dimensions than the integrated display  421 . 
     The apparatus  400  may include multi-environment display data handling logic  409 . The multi-environment display data handling logic  409  may be contained within one or more of the various operating system environments  407 . The multi-environment display data handling logic  409  may also exist independently from any of the operating system environments in some embodiments. However, for the example embodiment illustrated in  FIG. 4 , the first operating system environment is shown as including the multi-environment display data handling logic  409 . The multi-environment display data handling logic  409  is operatively coupled to the memory  411  and also to the GPU  415  via communication path  417  which may be implemented over the internal communication bus  413 . Therefore the communication path  417  is a schematic representation of a communication path between the multi-environment display handling logic  409  and the memory  411  and GPU  415 , and may be implemented via any suitable communication pathway. That is, it is to be understood that the operating system environment that includes the multi-environment display data handling logic  409  achieves the objectives by communicating with the GPU  415  and memory  411  via the communication bus  413 . The multi-environment display data handling logic  409  combines display data from at least a first operating system environment and a second operating system environment. The multi-environment display data handling logic  409  generates live wallpaper image data corresponding to the first operating system environment (i.e. op system  1  environment in  FIG. 4 ), and handles image data from the other operating system environments as overlay image data, that hovers above the live wallpaper image. In some embodiments, the multi-environment display data handling logic  409  may also combine into a workspace of the second operating system environment, display data associated with a corresponding home screen of the first operating system environment, to achieve the combined display. 
     In accordance with the embodiments, one or more of the plurality of operating system environments  407  include interoperability logic  408 . The interoperability logic  408  facilitates the communication of contextual information between the various operating system environments  407 . For example the first operating environment may pass contextual information  410  to the second operating system environment or, vice versa, the first operating system environment may receive contextual information  410  from the second operating system environment. In some embodiments, the multi-environment display data handling logic  409  and/or the interoperability logic  408  may be object oriented software or firmware that is executed by processor  403  only when more than one operating system environment is executed by the processor  403 . 
     The term “logic” as used herein may include software and/or firmware executing on one or more programmable processors (including CPUs and/or GPUs), and may also include ASICs, DSPs, hardwired circuitry (logic circuitry), or combinations thereof. For the example embodiment illustrated by  FIG. 4 , the interoperability logic  408 , and also the multi-environment display data handling logic  409 , may be executable instructions stored in memory  411 , which is a non-volatile, non-transitory memory. Furthermore, the operating system environments  407 , and the kernel  405 , may also consist of executable instructions that are executed by the programmable processor  403 , and that are stored in memory  411  for access by the programmable processor  403  as necessary. 
     Although the example provided by  FIG. 4  illustrates the operating system environments, kernel  405 , interoperability logic  408 , and also the multi-environment display data handling logic  409  as executed by the programmable processor  403 , which is located on the mobile device  401 , this functionality may also be alternatively, partially or collectively, located within the peripheral device  427 . In other words either the peripheral device  427  or the mobile device  401  may contain some of, all of, or various components of, the logic and other functionality described with respect to  FIG. 4  and would still remain in accordance with the embodiments herein disclosed. In other words, an apparatus in accordance with the embodiments may be the apparatus  400 , or may be the mobile device  401  individually, or the peripheral device  427  individually. Furthermore, interoperability logic  408  may be distributed among the various operating system environments  407  as shown in  FIG. 4 , or may be independent from the operating system environments  407 , or may be integrated into the common kernel  405  in some embodiments. 
     As mentioned briefly above, in some embodiments, the apparatus  400  may include the peripheral device  427  which may further have a docking station, such that the mobile device  401  may be docked within the peripheral device  427  and obtain the benefit of the larger display  425  as well as other possible peripheral functions. One example of such an apparatus is the Motorola Lapdock™ product. 
     Although the communication bus  429 , which may be any appropriate interface, is shown connected directly to the larger display  425 , it is to be understood that various other hardware and components may exist in the peripheral device intervening between the hardware  419  and the display  425 . In other words,  FIG. 4  is a diagram provided as an example that is not to be construed as a complete schematic diagram of a particular implementation of either a mobile device or the peripheral device.  FIG. 4  is an example only and is for the purpose of describing to those of ordinary skill how to make and use the various embodiments. Therefore  FIG. 4  is limited to showing only those components necessary to describe the features and advantages of the various embodiments to those of ordinary skill. It is to be understood that various other components, circuitry, and devices may be necessary in order to implement a complete functional apparatus and that those various other components, circuitry, devices, etc., are understood to be present by those of ordinary skill. 
     In some embodiments, the interoperability logic  408  may operate at an application service level of the various operating system environments to pass contextual information between the environments. In some cases, providing contextual information may involve extracting and providing file metadata, file extensions, pixel location information, and/or other contextual information, to the operating system environment to cause the receiving operating system environment to make an association of the received data, or data file, with the correct file type. In other words, the interoperability logic  408  informs the receiving operating system environment of the correct file type, or other data type, so that it uses the correct associated application, if appropriate, to for example, open a file. In one example, a document file may be drag-and-dropped from the second operating system environment to the first operating system environment. The first operating system environment will launch an application, for example, “quick office,” and open the document. In another example, the user may highlight text in the second operating system environment and drag-and-drop the text into a search bar widget of the first operating system environment. The first operating system environment would correctly interpret the text as a search request for the text. This interoperability provides the advantage of a more seamless operation for the user employing multiple operating system environments. 
     In one example embodiment, the first operating system environment may be an Android™ operating system environment and the second operating system environment maybe a Linux® based operating system environment. However, any of various operating system environments may be used, that operate with a common kernel in accordance with the embodiments. 
       FIG. 5  and  FIG. 6  are flowcharts that describe high level operation of the various embodiments. In  501 , data and contextual information for the data, is provided to a first operating system environment by a second operating system environment. The data is associated with the first operating system environment and may be an application, widget, document, plain text, photograph, video, or any other type of data. In  503 , the first operating system environment utilizes the data based on the received contextual information. In  FIG. 6 , block  601 , a browser application of a second operating system environment may be used to download data for a first operating system environment. In  603 , the data may be moved from a window, such as the browser window, of the second operating system environment to the first operating system environment along with contextual information for the data. In  605 , the first operating system environment utilizes the data based on the contextual information. For example, the first operating system environment may install and run the data as an application or widget. 
       FIG. 7 ,  FIG. 8  and  FIG. 9  provide specific operational examples of the various embodiments. In  FIG. 7 , block  701  a user may download data for the first operating system environment (“OSE  1 ”) using a browser of a second operating system environment (“OSE  2 ”). The user may then drag-and-drop the data from an OSE  2  window to an OSE  1  display area, such as desktop  303  shown in  FIG. 3 . OSE  1  will recognize the data as a known file type, launch the appropriate application and open the file. This is because the interoperability logic  408  provided contextual information  410  associated with the data to OSE  1 . 
     In  FIG. 8 , the user may download an OSE  1  application using an OSE  2  browser. The user may then drag-and-drop the application icon from an OSE  2  window to an OSE  1  display area, such as desktop  303 . OSE  1  obtains the contextual information and installs the application accordingly. In  FIG. 9 , an OSE  2  browser is used to download an OSE  1  widget. The widget may be drag-and-dropped from an OSE  2  window to the OSE  1  desktop  303 . OSE  1  obtains contextual information from the interoperability logic of OSE  2  and installs the widget at the drop location on the desktop  303 . In some cases, OSE  1  will also launch a widget options screen, or window, to obtain user input for the options as shown in  907 . 
     Among other advantages of various embodiments disclosed herein, the user experience is enhanced when accessing application data or other data using one or more operating system environments. Using the embodiments, such data may be passed from one operating system environment to another, and be understood by the receiving operating system environment. Although the embodiments have been described using examples related to two operating system environments, the various embodiments are not limited to only two operating system environments and can incorporate many operating system environments as illustrated by the plurality of operating system environments  407  shown in  FIG. 4 . Therefore the interoperability logic  408 , in accordance with the embodiments, may handle providing contextual information  410  between any number of operating system environments, where the operating system environments all utilize the common kernel  405 . 
     The various embodiments also include computer readable memory that may contain executable instructions, for execution by at least one processor, that when executed, cause the at least one processor to operate in accordance with the interoperability logic  408  functionality herein described. The computer readable memory may be any suitable non-volatile, non-transitory, memory such as, but not limited to, programmable chips such as EEPROMS, flash ROM (thumb drives), compact discs (CDs) digital video disks (DVDs), etc., that may be used to load executable instructions or program code to other processing devices or electronic devices such as those that may benefit from the features of the herein described embodiments. The executable instructions may also include the various operating system environments and the common kernel. 
     While various embodiments have been illustrated and described, it is to be understood that the invention is not so limited. Numerous modifications, changes, variations, substitutions and equivalents will occur to those skilled in the art without departing from the scope of the present invention as defined by the appended claims.