Share modified files

By storing sharing files only on the local computing device, and initiating sharing and sending after the file is modified, the problem of communication resources consumption and users cannot access files when sharing files can be solved, and the effect of reducing the use and communication consumption of memory use.

CN113243006BActive Publication Date: 2025-01-28GOOGLE LLC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN201980082039.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-01-29
Filing Date
2019-08-15
Publication Date
2025-01-28
Estimated Expiration
2039-08-15

AI Technical Summary

Technical Problem

In the prior art, when sharing files, the files need to be stored on a third-party server, resulting in the consumption of communication resources and users without network access cannot access the files stored in a remote location.

Method used

Storage of the file only on the local computing device, and initiate sharing and send files after the user modify the file to avoid communication when not modifying the file.

Benefits of technology

It reduces the use of memory and the consumption of communication resources, and avoids the problem of unable to access files without internet access.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113243006B_ABST
    Figure CN113243006B_ABST
Patent Text Reader

Abstract

A method may include: in response to receiving a sharing input from a local user entering a local computing device, sending a file from the local computing device to a recipient; in response to sending the file, storing a sharing record on the local computing device, the sharing record being used to identify the file and the recipient; in response to receiving a modification input from the local user entering the local computing device to modify the file, determining that the sharing record identifies the file and the recipient; and based on determining that the sharing record identifies the file and the recipient, initiating sending of at least a portion of the file to the recipient.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application is a continuation of and claims priority to U.S. Application No. 16 / 261,087, filed on January 29, 2019, which claims the benefit of U.S. Provisional Application No. 62 / 784,439, filed on December 22, 2018, the disclosures of both applications being incorporated herein by reference in their entirety. Background Art

[0003] Shared files can be modified by users at remote locations. Storing shared files at a location that is remote from all users of the file may consume communication resources when the file is not in use. Files stored at remote locations may also be inaccessible to users without network access, and the files may not be under the control of the file or device owner. Summary of the invention

[0004] According to an example, a method may include: in response to receiving a sharing input from a local user entering a local computing device, sending a file from a local computing device to a recipient; in response to sending the file, storing a sharing record on the local computing device, the sharing record identifying the file and the recipient; in response to receiving a modification input from the local user entering the local computing device to modify the file, determining that the sharing record identifies the file and the recipient; and based on determining that the sharing record identifies the file and the recipient, initiating sending of at least a portion of the file to the recipient.

[0005] According to an example, a non-transitory computer-readable storage medium includes instructions stored thereon. When executed by at least one processor, the instructions may be configured to cause a local computing device to: in response to receiving a share input from a local user into the local computing device, send a file from the local computing device to a recipient; in response to sending the file, store a share record on the local computing device, the share record identifying the file and the recipient; in response to receiving a modify input from the local user into the local computing device to modify the file, determine that the share record identifies the file and the recipient; and based on determining that the share record identifies the file and the recipient, initiate sending at least a portion of the file to the recipient.

[0006] An apparatus may include at least one processor and at least one memory device. The at least one memory device may include instructions stored thereon that, when accessed by the at least one processor, cause the apparatus to: in response to receiving a share input from a local user into a local computing device, send a file from a local computing device to a recipient; in response to sending the file, store a share record on the local computing device, the share record identifying the file and the recipient; in response to receiving a modify input from the local user into the local computing device to modify the file, determine that the share record identifies the file and the recipient; and based on determining that the share record identifies the file and the recipient, initiate sending at least a portion of the file to the recipient.

[0007] The details of one or more embodiments are set forth in the accompanying drawings and the detailed description below. Other features will become apparent from the detailed description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Figure 1 is a network diagram illustrating entities that can modify and / or share files, according to an example.

[0009] Figure 2 is a timing diagram illustrating a local computing device modifying and sharing a file according to an example.

[0010] Figure 3A A file according to an example is shown.

[0011] Figure 3B The modified file according to the example is shown.

[0012] Figure 4A A computing device according to an example is shown.

[0013] Figure 4B Shows a contact record according to an example.

[0014] Figure 4C Shows shared records according to examples.

[0015] Figure 5 A method of sharing a file according to an example is shown.

[0016] Figure 6 A method of sharing a file according to an example is shown.

[0017] Figure 7 Examples of computer devices and mobile computer devices are shown that can be used to implement the techniques described herein. DETAILED DESCRIPTION

[0018] Users of multiple computing devices (e.g., local computing devices and remote computing devices) directly accessed by users can share and modify files. The technical problem of storing shared files on third-party devices such as third-party servers is that storage on third-party devices requires communication between third-party devices and multiple computing devices directly accessed by users who share and modify the files, which consumes communication and / or network resources. Another technical problem is that users without network access cannot access files stored on third-party devices. Another technical problem is the consumption of memory resources on third-party devices. In order to avoid communication between computing devices when files are not modified, and thus reduce the consumption of communication and / or network resources, the technical solution is to store files only locally on computing devices directly accessed by users, and initiate sharing and / or sending files after users have modified files. This technical solution has the following technical advantages: by eliminating any need to store shared files on another device (e.g., third-party servers), and avoiding the need to communicate when files are not modified, memory usage is reduced. In some instances, the files are not shared on any computing device other than the computing device associated with and / or accessed by the user who shares the files. In some examples, the file is stored on computing devices that do not exceed the number of users sharing the file.

[0019] Figure 1 1 is a network diagram showing entities that can modify and / or share files according to examples. Local users 102 can create, access, modify and / or save files. As non-limiting examples, files can include word processing documents, spreadsheets or comma separated value files, source code of software programs, or graphic files. Local users 102 can create, access, modify and / or save files on local computing devices 104A, 104B, 104C, as non-limiting examples, the local computing devices are such as smart phone local computing devices 104A, tablet or notebook local computing devices 104B, or desktop local computing devices 104C (local computing devices 104 will refer to single local computing devices below). Local users 102 can create, access, modify and / or save files on a single local computing device 104, and the files can be saved and / or stored on a single local computing device 104. Other computing devices may not be able to access versions and / or instances of the files saved and / or stored on a single local computing device.

[0020] The local user 102 may choose to share the file with another user who does not have access to the local computing device 104 on which the file is saved and / or stored. The recipient with whom the local user chooses to share the file may be, for example, a user, user profile, and / or remote user device of a remote user, and shall be referred to herein as the remote user 110. The remote user 110 may access, modify, and / or save versions and / or instances of files saved and / or stored on remote computing devices 108A, 108B, 108C via a remote computing device 108, such as a smartphone remote computing device 108A, a tablet or notebook remote computing device 108B, or a desktop remote computing device 108C, as non-limiting examples (the remote computing device 108 will hereinafter refer to a single remote computing device).

[0021] The local user 102 may choose to share the file with the remote user 110. The local user 102 and the remote user 110 may collaborate on the document represented by the file, or the local user 102 may simply want to provide the most recent copy of the file to the remote user 110. The methods, functions, and / or techniques described herein with respect to the local user 102 sharing a file with the remote user 110 may also be performed in the reverse direction, enabling the remote user 110 to share the file and / or another file with the local user 102.

[0022] The local user 102 may provide sharing input to the local computing device 104, and the local computing device 104 may receive sharing input from the local user 102. The local user 102 may provide sharing input to the local computing device 104 by pressing and / or clicking a sharing button built into an application or operating system running on the local computing device 104, or by instructing the local computing device 104 to send a file to the remote user 110, such as by clicking a send button within an email program with the file attached to an email and the email address of the remote user included as a recipient of the email. The sharing input may identify the file and / or the remote user. The sharing input may identify the remote user by, for example, a user identifier or email address associated with the remote user 110, or an address of a remote computing device 108 associated with the remote user 110. The local computing device 104 may respond to receiving the sharing input from the local user 102 by sending the file to the remote user 110.

[0023] The local computing device 104 may respond to receiving the sharing input by sending the file to a remote computing device 108 associated with the remote user 110. The local computing device 104 may send the file to the remote computing device 108 via a network 106, such as a local area network (LAN), a cellular network, or the Internet, or directly to the remote computing device 108 when the local computing device 104 and the remote computing device 108 are capable of peer-to-peer communication with each other. The remote computing device 108 may become associated with the remote user 110 by the remote user 110 logging into the remote computing device 108 using an email address or user identifier included in the sharing input received by the local computing device 104. The remote user 110 may access the file on the remote computing device 110.

[0024] In response to the local user 102 sharing a file with the remote user 110, and / or the remote computing device 104 sending a file to the remote computing device 108, the local computing device 104 may store a sharing record on the local computing device 104. The sharing record may indicate that the file was previously shared by the local user 102 and the remote user 110. The sharing record may identify the file and the remote user 110 and / or remote computing device 108 that shared the file.

[0025] After having shared the file with the remote user 110, the local user 102 can then modify the file. The local user 102 can then modify the file in the same session on the application, or can close the file and open the file later on the same or different application. The local user 102 can modify the file by adding materials such as text, deleting materials, or replacing materials in the file. The local user 102 can modify the file by providing modification input (such as key or touch input) entering the local computing device 104, and the input adds, deletes or replaces one or more parts of the file, such as text or other data included in the file. After modifying in the same or different application as the application that previously shared and / or sent the file, the modified file can be shared and / or sent.

[0026] In response to receiving the modification input from the local user 102, the local computing device 104 may determine whether a sharing record stored on the local computing device 104 (e.g., a sharing record created and / or stored by the local computing device 104 in response to the local user 102 sharing the file with the remote user 110) identifies the file and / or the remote user 110. After receiving the modification input, or after a subsequent event (e.g., the local user 102 instructs the local computing device 104 to save the modified file or close the application in which the file was modified), the local computing device 104 may perform a determination of whether the sharing record identifies the file and / or the remote user 110. The local computing device 104 may determine whether the sharing record identifies the file and / or the remote user 110 by searching the sharing record and determining whether one or more sharing records identify the modified file. If the local computing device 104 determines that the one or more sharing records identify the modified file, the local computing device 104 may determine which user or users (e.g., the remote user 110) are identified by the sharing record identifying the modified file.

[0027] Based on determining that the shared record identifies the modified file and the remote user 110, the local computing device 104 can initiate sending at least a portion of the modified file to the remote user 110. In some instances, the initiating sending can include sending at least a portion of the file to the remote user. In some instances, the initiating sending can include prompting the local user 102 to send the portion of the file to the remote user 110. The initiating sending can include sharing at least a portion of the modified file, and / or sending at least a portion of the modified file to the remote user 110, and / or prompting the local user 102 to share at least a portion of the modified file, and / or prompting to send at least a portion of the modified file to the remote user 110. According to an example embodiment, the local computing device 104 can share and / or send the entire modified file and / or the entire file, only the modified portion of the file (e.g., the portion of the file that was added), or an indication of the modification of the file. The local computing device 104 can share and / or send the modified file by sending an electronic message (e.g., an email including the file) to the remote computing device 108. In some instances, the local computing device 104 may send the file to an address different from the address to which the file was originally sent and / or with which the file was originally shared, and / or share the file with an address different from the address to which the file was originally sent and / or with which the file was originally shared. In some instances, the local user 102 and / or the local computing device 104 may share the file with and / or send the file to a first address associated with the remote user 110, and after modifying the file, the local user 102 and / or the local computing device 104 may share the file with and / or send the file to a second address associated with the remote user 110, and / or send the file to the second address. Although this example describes that the local user 102 subsequently modifies the shared file on the local computing device 104, and the local computing device 104 determines whether the sharing record identifies the file and / or the remote user 110 and initiates sending at least a portion of the file, in some examples, the remote user 110 may subsequently modify the shared file on the remote computing device 108, and the remote computing device may determine whether the sharing record identifies the file and / or the local user 102 (and / or another user with whom the file is shared), and initiate sending at least a portion of the shared file to the local user 102 (and / or another user).

[0028] In some instances, the sharing record can identify and / or refer to a contact record associated with a remote user. The contact record can include contact information, such as an address (e.g., an email address), a telephone number, or a user identifier associated with a social networking site. The local computing device 104 can extract an address from the contact record. The local computing device 104 can send at least a portion of the file to the extracted address and / or share at least a portion of the file, or prompt the local user 102 to send at least a portion of the file to the extracted address and / or share at least a portion of the file. The local computing device 104 can prompt the local user 102 to share the file and / or the modified file by presenting a button and / or a pop-up window to the local user 102. According to an example embodiment, the local computing device 104 can send and / or share the file in response to the local user 102 providing input to the button and / or pop-up window. As non-limiting examples, the local computing device 104 may send and / or share the file by, for example, sending an email with the file as an attachment to the remote user 110, sending a text message including the file to the remote user 110, or uploading the file to a social networking site and authorizing the remote user 110 to access the file on the social networking site.

[0029] Figure 2 2 is a sequence diagram illustrating the modification and sharing of a file by a local computing device 104 according to an example. The local computing device 104 may create a file (202). The local computing device 104 may create the file (202) by, for example, opening an application (e.g., a word processing application or a spreadsheet application), processing input received from a local user 102, and saving the file in a database included in the local computing system 104.

[0030] The local computing device 104 may modify the file (204). The local computing device 104 may modify the file (204) by processing input received from the local user 102 into the file (eg, text additions and / or text deletions).

[0031] Figure 3A The file 208 according to the example is shown. In this example, the file 208 is a word processing document. In this example, the file 208 includes text entered by the local user 102.

[0032] Return to Figure 2, the local computing device 104 may receive a sharing input (206) from the local user 102, for example, by receiving an input into a share button or receiving a sharing instruction associated with the file and the remote user 110 from the local user 102, or by receiving an instruction from the local user 102 to send an electronic message, such as an email, to an address associated with the remote user 110. The electronic message may include the file. In response to receiving the sharing input, the local computing device 104 may share the file 208 by sending the file 208 to the remote computing device 108 associated with the remote user 110.

[0033] The local computing device 104 may store a sharing record (210). The local computing device 104 may store the sharing record (210) in response to sharing and / or sending the file 208 and / or after sharing and / or sending the file 208. In some instances, the sharing record may identify the shared file 208 and the remote user 110 to whom the file 208 was sent and / or with whom the file 208 was shared. In some instances, the sharing record may identify the shared file 208 and the address of the remote user 110 to whom the file 208 was sent and / or with whom the file 208 was shared, such as an email address.

[0034] The local computing device 104 may modify the file (212). The local computing device 104 may modify the file (212) after storing the shared record (210). The local computing device 104 may modify the file (212) in response to input received from the local user 102 (e.g., addition, deletion, and / or replacement of data and / or text within the file).

[0035] Figure 3B A modified file 218 according to an example is shown. In this example, the file 208 has been modified by adding text, thereby generating Figure 3B The modified file shown in 218.

[0036] Return to Figure 2, local computing device 104 may determine whether file 218 is a shared file (214). In response to receiving a sharing input from local user 102 and / or after receiving a sharing input from local user 102, in response to receiving an input and / or instruction from local user 102 to save modified file 218 and / or after receiving an input and / or instruction from local user 102 to save modified file 218, and / or in response to receiving an input and / or instruction from local user 102 to close an application in which a file was modified and / or after receiving an input and / or instruction from local user 102 to close an application in which a file was modified, local computing device 104 may determine whether file 218 is a shared file (214).

[0037] In some examples, local computing device 104 may determine whether modified file 218 is a shared file by searching the shared record for an identifier and / or indicator of file 218. If local computing device 104 finds a shared record with an identifier and / or indicator of file 218, local computing device 104 may determine that file 218 is a shared file based on the shared record identifying and / or indicating file 218.

[0038] The local computing device 104 may retrieve the contact information (216). The local computing device 104 may retrieve the contact information (216) after determining that the file 218 is a shared file. The local computing device 104 may retrieve the contact information (216) with which the modified file 218 should be shared. The local computing device 104 may retrieve the contact information (216) by, for example, extracting an address from a sharing record that identifies and / or indicates the file 218.

[0039] The local computing device 104 may share the file 218 and / or send the file 218 to the remote computing device 108. The remote computing device 108 may be associated with the remote user 110 identified by the retrieved contact information. The local computing device 104 may share the file and / or send the file to the remote computing device 108 by sending an electronic message to the remote computing device 108. The remote computing device 108 may include the modified file 218.

[0040] In some examples, the local device 104 may receive a file from the remote device 108. In response to receiving the file from the remote device 108, the local device 104 may determine whether the received file was previously shared by the local device 104 and the remote device 108. The local device 104 may, for example, compare the received file to the file of the shared storage record. If the received file meets a threshold of having similar and / or matching content with the file of the shared storage record, the shared record may be updated to identify the received file (the user may have indicated that the local device 104 shared the received file). The shared record may then identify the received file, and the local device 104 may prompt the user to share the received file in response to triggering an event relative to the received file. In some examples, if the local device 104 receives a file that does not have a shared record identifying it (e.g., an existing file), the local device 104 may create a new shared record for identifying the source from which the file is shared. The source from which the file is shared may be an identifier of a user and / or computing device from which the file is received. If the received file is subsequently modified at the local computing device 104, the local computing device 104 may, based on the sharing record identifying the file as a shared file, prompt the local user to send the updated and / or modified file back to the source from which the file was received (e.g., the remote computing device 108 and / or remote user 110) in a manner similar to files created on the local computing device 104 and originally shared by the local computing device.

[0041] Figure 4A A computing device 400 is shown according to an example. The computing device 400 may implement features of any of the local computing devices 104A, 104B, 104C, and / or any of the remote computing devices 108A, 108B, 108C, and / or may be an example of any of the computing devices 104A, 104B, 104C, 108A, 108B, 108C described above.

[0042] Computing device 400 may include operating system 402. Operating system 402 may control and / or manage components and / or modules included in computing device 400. In some examples, operating system 402 may implement and / or perform any combination of methods, techniques, and / or features described herein.

[0043] Operating system 402 may include resource allocator 404. Resource allocator 404 may allocate computing resources, such as processor resources, memory resources, and / or communication resources, among various applications, processes, and / or threads running on computing device 400.

[0044] The operating system 402 may include a plurality of application program interfaces (APIs) 405. The APIs 405 may include methods, functions, and / or techniques implemented and / or executed by the operating system 402 in response to a triggering event. In some instances, as non-limiting examples, the triggering event may include creating and / or storing a file, modifying a file, saving a file, closing an application executing a file, or making an API call by an application. In some instances, the API 405 may be called and / or triggered by an application in response to creating and / or storing a file, modifying a file, saving a file, and / or closing an application executing a file. The APIs do not need to be separately written and / or stored for each application, but may be called by different applications (e.g., different word processing applications) and / or by the operating system 402 in response to a triggering event.

[0045] The operating system 402 may include a sharing recorder API 406. The sharing recorder API 406 may create, record, and / or store sharing records. The sharing recorder API 406 may create, record, and / or store sharing records. The sharing recorder API 406 may create, record, and / or store sharing records in response to the local user 102 and / or the local computing device 104 sharing and / or sending a file. The sharing record may include, for example, an identifier and / or indicator of the file being shared and / or sent, and an identifier and / or indicator of the user to whom the file was sent and / or with whom the file was shared.

[0046] The operating system 402 may include a sharing determiner API 408. The sharing determiner API 408 may determine whether a file has been shared. The sharing determiner API 408 may determine whether a file has been shared in response to modifying a file, saving a file, and / or closing an application for executing a file. The sharing determiner API 408 may determine whether a file has been shared by searching a sharing record for identifying and / or indicating a file. The sharing determiner API 408 may determine that a file has been shared based on a sharing record for identifying and / or indicating the file, such as by storing a name (e.g., a file name) and / or a path file of the file.

[0047] The operating system 402 may include a sharing prompter API 410. The sharing prompter API 410 may prompt the local user 102 to share and / or send a file, and / or may prompt the computing device 400 to share and / or send a file. The sharing prompter API 410 may perform the prompting in response to the sharing determiner API 408 determining that the file is a shared file. The sharing prompter API 410 may present a prompt for the local user 102 to share and / or send the file, for example, by indicating acceptance to share and / or send the file. As non-limiting examples, the prompt may include a pop-up window with an accept or reject button, a text prompt may be included in the user interface of the application that opens the file, and a text prompt may be included for requesting the local user 102 to enter an acceptance or rejection of the prompt to share the file, or another application (e.g., an email or other messaging application) may be opened with the address of the file and the remote user 110 attached.

[0048] If the local user 102 accepts, and / or if the sharing prompter API 410 prompts the computing device 400 to share and / or send the file, the sharing prompter API 410 may send the file to the remote user 110 and / or share the file with the remote user 110, for example, by sending the file as an attachment to an email to the remote user 110. If the local user 102 rejects the prompt, the sharing prompter API 410 will not perform further actions. In some instances, the local user 102 may instruct the computing device 400 to share the file and / or send the file to the remote user 110 without the computing device 400 first prompting the local user 102, sharing the file, and / or sending the file in response to a triggering event (e.g., modifying the file, saving the file, closing the application executing the file, or executing an API through the application). In some instances, the file may be sent or shared through an application different from the prompt executed in, for example, a word processing application (e.g., an email application).

[0049] In some examples, the sharing prompter API 410 may determine whether to prompt the local user 102 to share and / or send the file, and / or prompt the computing device 400 to share and / or send the file by learning the likelihood that the local user 102 wants to share the file, and / or based on the likelihood that the local user 102 will want to share the file. The sharing prompter API 410 may learn the likelihood that the local user 102 wants to share the file through machine learning techniques. In some examples, the sharing prompter API 410 may determine to prompt the local user 102 to share the file based on previous responses to prompts in similar contexts. In some examples, if the local user 102 accepts the prompt to share the file in response to a specific trigger that is equal to or greater than a threshold time (e.g., the local user 102 saves the file, modifies the file, or closes the application in which the file is open), the sharing prompter API 410 may continue to prompt the local user 102 to share the file in response to the specific trigger. In some instances, if the local user 102 declines the prompt to share the file in response to the specific trigger equal to or greater than a threshold period of time, the sharing prompter API 410 may stop and / or abort prompting the local user 102 to share the file in response to the specific trigger. In some instances, if the local user 102 declines the prompt to share the file in response to the specific trigger equal to or greater than a threshold period of time, the sharing prompter API 410 may stop and / or abort prompting the local user 102 to share the file in response to the specific trigger for multiple events of the specific trigger, but later prompts the local user 102 to share the file, and resumes prompting the local user 102 to share the file in response to the specific trigger if the local user 102 accepts the prompt to share the file.

[0050] Computing device 400 may include applications 412. Applications 412 may include programs executed and / or implemented by computing device 400.

[0051] Applications 412 may include an email application 414. Email application 414 may send electronic messages to other users and / or other computing devices, and receive electronic messages from other users and / or other computing devices. Electronic messages may include attachments, such as shared files described herein. Sharing prompter 410 may invoke email application 414 to share the file by sending the file as an attachment in an email to the email address of remote user 110.

[0052] Applications 412 may include text application 416. Text application 416 may send text messages to or from other computing devices, for example, by using a phone number as an address. Text application 416 may include files, such as pictures or videos, in the text message. In some examples, sharing prompter 410 may invoke text application 416 to share the file by sending the file as an attachment in the text message to the phone number of remote user 110.

[0053] The applications 412 may include a word processor application 418. The word processor application 418 may receive and store text data entered by the local user 102, and may modify the text data based on the input from the local user 102.

[0054] Applications 412 may include a spreadsheet application 420. Spreadsheet application 420 may receive numerical data and / or comma separated value input. Spreadsheet application 420 may perform calculations on the received data and / or input. Spreadsheet application 420 may modify the data and / or input based on input received from local user 102.

[0055] Computing device 400 may include database 422. Database 422 may store data received from local users and / or data generated by computing device 400.

[0056] Database 422 may store files 424. As non-limiting examples, stored files 424 may include text data received by word processor application 418, and / or comma separated value input received by spreadsheet application 420. Files 424 are stored only locally on computing device 400 and are not accessible to users of other computing devices (e.g., remote users 110 of remote computing devices 108) until computing device 400 shares file 424 and / or sends file 424 to remote computing device 108.

[0057] The database may store contact records 426. Contact records 426 may include contact information of other users received from local user 102 and / or received from other computing devices.

[0058] Figure 4BA contact record 426 according to an example is shown. In this example, the contact record 426 includes an identifier 452, a first address 454, and a second address 456. The identifier 452 may include the name of the person whose contact information is stored, and / or a unique identifier of the person or remote user 110. The first address 454 may include the address of the person identified by the contact record 426, such as an email address, a telephone number, a user identifier associated with a social networking site, or other addresses through which a message can be routed to the person. The second address 456 may include another address different from the first address, such as an email address, a telephone number, a user identifier associated with a social networking site, or other addresses through which a message can be routed to the person. The second address 456 may have the same address type as the first address 454, such as both being email addresses or telephone numbers, or having a different address type than the first address 454.

[0059] Database 422 may store sharing records 428. Sharing records 428 may identify and / or indicate files that have been shared, and identifiers of other users that have shared the files.

[0060] Figure 4C A sharing record 428 according to an example is shown. In this example, the sharing record 428 may include a user identifier 472 and a file identifier 474. The user identifier 472 may identify the user sharing the file. In some examples, the user identifier 472 may match the identifier 452 included in the contact record 426 for the user and / or person. The file identifier 474 may identify the shared file, for example, by the file name and / or path file of the shared file.

[0061] The computing device 400 may include at least one memory device 432. The at least one memory device 432 may include a non-transitory computer-readable storage medium. The at least one memory device 432 may store data (e.g., data stored in the database 422) and / or any other information described herein with respect to the computing device 400. The at least one memory device 432 may also store instructions that, when executed by at least one processor, cause the computing device 400 to perform any combination of methods, functions, and / or techniques described herein with respect to the computing devices 104, 108, 400.

[0062] Computing device 400 may include at least one processor 430. At least one processor 430 may execute instructions, such as instructions stored in at least one memory device 432, to cause computing device 400 to perform any combination of the methods, functions, and / or techniques described herein with respect to computing devices 104, 108, 400.

[0063] The computing device 400 may include at least one input / output node 434. The at least one input / output node 434 may, for example, receive data from the computing device 400 and / or send data to the computing device 400. The input and output functions may be combined into a single node, or may be separated into separate input and output nodes. The input / output node 434 may utilize any wired or wireless communication technology.

[0064] Figure 5 A method of sharing a file according to an example is shown. The method may include, in response to receiving a share input from a local user into a local computing device, sending a file from a local computing device to a recipient (502). The method may further include, in response to sending the file, storing a sharing record on the local computing device, the sharing record identifying the file and the recipient (504). The method may further include, in response to receiving a modification input from a local user into the local computing device to modify the file, determining that the sharing record identifies the file and the recipient (506). The method may further include initiating sending at least a portion of the file to the recipient based on determining that the sharing record identifies the file and the recipient (508).

[0065] According to an example, the recipient may include at least one of a remote user, a user profile, or a remote user device.

[0066] According to an example, initiating the sending may include sending at least a portion of the file to the recipient, and prompting the local user to send at least a portion of the file to the recipient.

[0067] According to an example, the sharing input can be received within a first application and the modifying input can be received within a second application, the second application being different from the first application.

[0068] According to an example, sending the file in response to the share input can be performed by a different application than initiating sending of at least a portion of the file to the recipient.

[0069] According to an example, the file may be stored on a local computing device and not accessible to the recipient.

[0070] According to an example, at least a portion of the file may include a modified portion of the file.

[0071] According to an example, initiating sending at least a portion of the file to the recipient may include: retrieving a contact record associated with the recipient; extracting an address from the contact record; and prompting the local user to send at least a portion of the file to the extracted address.

[0072] According to an example, the extracted address may be different than the address to which the local computing device sends the file in response to receiving a share input into the local computing device from a local user.

[0073] According to an example, the initiating sending may be performed after closing an application via which the modification input is received.

[0074] Figure 6 A method for sharing a file according to an example is shown. The method may include storing a sharing record on a local computing device (602). The sharing record may indicate that the file is shared by a local user and a remote user. The file may be stored on the local computing device and the remote user may not be able to access the file. The method may include, in response to a local user modifying the file, determining that the sharing record indicates that the file was previously shared by the local user and the remote user (604). The file may include prompting the local user to subsequently share the modified file with the remote user based on determining that the sharing record indicates that the file is shared by the local user and the remote user (606).

[0075] According to an example, the prior sharing may include sending an electronic message from the local computing device to an address associated with the remote user, the electronic message including the file.

[0076] According to an example, the previous sharing may include sending a first electronic message from the local computing device to a first address associated with the remote user, the first electronic message including the file, and the subsequent sharing may include sending a second electronic message from the local computing device to a second address associated with the remote user. The second electronic message may include the modified file. The second address may be different from the first address.

[0077] Figure 7 An example of a general purpose computer device 700 and a general purpose mobile computer device 750 is shown, which may be an example of the computing devices 104, 108, 400 described above and may be used with the techniques described herein. The computing device 700 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, tablet computers, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other suitable computing devices. The computing device 750 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, and other similar computing devices. The components shown here, the connections and relationships of the components, and the functions of the components are meant to be exemplary only and are not meant to limit the embodiments of the inventions described and / or claimed in this document.

[0078] The computing device 700 includes a processor 702, a memory 704, a storage device 706, a high-speed interface 708 connected to the memory 704 and a high-speed expansion port 710, and a low-speed interface 712 connected to a low-speed bus 714 and the storage device 706. The processor 702 can be a semiconductor-based processor. The memory 704 can be a semiconductor-based memory. Each of the components 702, 704, 706, 708, 710 and 712 is interconnected by using various buses and can be installed on a general motherboard or installed in other ways as appropriate. The processor 702 can process instructions for execution within the computing device 700, including instructions stored in the memory 704 or on the storage device 706 to display graphical information of a GUI on an external input / output device (e.g., a display 716 coupled to the high-speed interface 708). In other embodiments, multiple processors and / or multiple buses can be used with multiple memories and multiple types of memories as appropriate. Furthermore, multiple computing devices 700 may be connected, with each device providing some portion of the necessary operations (eg, as a server bank, a group of blade servers, or a multi-processing system).

[0079] The memory 704 stores information within the computing device 700. In one embodiment, the memory 704 is one or more volatile memory units. In another embodiment, the memory 704 is one or more non-volatile memory units. The memory 704 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.

[0080] Storage device 706 can provide mass storage for computing device 700. In one embodiment, storage device 706 can be or can include a computer readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a magnetic tape device, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configuration. A computer program product can be tangibly embodied in an information carrier. A computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine readable medium, such as memory 704, storage device 706, or a memory on processor 702.

[0081] The high-speed controller 708 manages bandwidth-intensive operations of the computing device 700, while the low-speed controller 712 manages less bandwidth-intensive operations. This allocation of functions is exemplary only. In one embodiment, the high-speed controller 708 is coupled to the memory 704, the display 716 (e.g., through a graphics processor or accelerometer), and the high-speed expansion port 710 that can accept various expansion cards (not shown). In an embodiment, the low-speed controller 712 is coupled to the storage device 706 and the low-speed expansion port 714. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices (e.g., keyboards, pointing devices, scanners), or (e.g., through a network adapter) to a networking device such as a switch or router.

[0082] As shown, computing device 700 can be implemented in a variety of different forms. For example, the computing device can be implemented as a standard server 720, or multiple times implemented in a group of such servers. The computing device can also be implemented as part of a rack server system 724. In addition, the computing device can be implemented in a personal computer such as a laptop computer 722. Alternatively, components from computing device 700 can be combined with other components in a mobile device (not shown) such as device 750. Each of such devices can contain one or more of computing devices 700, 750, and the entire system can be composed of multiple computing devices 700, 750 that communicate with each other.

[0083] The computing device 750 includes a processor 752, a memory 764, an input / output device such as a display 754, a communication interface 766, and a transceiver 768, among other components. The device 750 may also be provided with a storage device such as a micro hard drive or other device to provide additional storage. Each of the components 750, 752, 764, 754, 766, and 768 are interconnected using various buses, and several components may be mounted on a common motherboard or otherwise as appropriate.

[0084] Processor 752 can execute instructions within computing device 750, including instructions stored in memory 764. The processor can be implemented as a chipset including separate multiple analog and digital processor chips. For example, the processor can provide coordination for other components of device 750, such as control of a user interface, applications executed by device 750, and wireless communications performed by device 750.

[0085] The processor 752 can communicate with the user through the control interface 758 and the display interface 756 coupled to the display 754. For example, the display 754 can be a TFT LCD (thin film transistor liquid crystal display), or an OLED (organic light emitting diode) display, or other suitable display technology. The display interface 756 may include suitable circuits for driving the display 754 to present graphics and other information to the user. The control interface 758 can receive commands from the user and convert the commands to submit to the processor 752. In addition, an external interface 762 that communicates with the processor 752 can be provided so that the device 750 can communicate with other devices in a near area. For example, the external interface 762 can be provided for wired communication in some embodiments, or for wireless communication in other embodiments, and multiple interfaces can also be used.

[0086] The memory 764 stores information in the computing device 750. The memory 764 can be implemented as one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 774 can also be provided, and the expansion memory is connected to the device 750 through an expansion interface 772, and the expansion interface can include, for example, a SIMM (single in-line memory module) card interface. Such an expansion memory 774 can provide additional storage space for the device 750, or can also store applications or other information for the device 750. Specifically, the expansion memory 774 can include instructions for executing or supplementing the above-mentioned process, and can also include security information. Therefore, for example, the expansion memory 774 can provide a security module for the device 750, and can be programmed with instructions that allow the device 750 to be used safely. In addition, a security application can be provided together with additional information via a SIMM card, for example, identification information is placed on the SIMM card in an unbreakable manner.

[0087] As described below, the memory may include, for example, flash memory and / or NVRAM memory. In one embodiment, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer or machine readable medium that can be received, for example, by transceiver 768 or external interface 762, such as memory 764, expansion memory 774, or memory on processor 752.

[0088] The device 750 can communicate wirelessly through a communication interface 766, which may include digital signal processing circuitry as needed. The communication interface 766 may provide for communication under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, etc. For example, such communication may be performed through a radio frequency transceiver 768. In addition, short-range communications may be performed, for example, using Bluetooth, WiFi, or other such transceivers (not shown). In addition, a GPS (global positioning system) receiver module 770 may provide additional wireless data related to navigation and location to the device 750, which may be used by applications running on the device 750 as appropriate.

[0089] Device 750 may also communicate audibly by using audio codec 760, which may receive voice information from a user and convert the voice information into usable digital information. Audio codec 760 may similarly generate audible sounds for the user, such as through a speaker, such as in a handset of device 750. Such sounds may include sounds from voice calls, may include recordings (e.g., voice messages, music files, etc.), and may also include sounds generated by applications running on device 750.

[0090] As shown, the computing device 750 can be implemented in a variety of different forms. For example, the computing device can be implemented as a cellular phone 780. The computing device can also be implemented as part of a smart phone 782, a personal digital assistant, or other similar mobile device.

[0091] Various embodiments of the systems and techniques described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various embodiments can include embodiments in one or more computer programs that can be executed and / or interpreted on a programmable system that includes at least one programmable processor that can be used for special or general purposes and is coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to transmit data and instructions to a storage system, at least one input device, and at least one output device.

[0092] These computer programs (also referred to as programs, software, software applications or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages, and / or in assembly / machine languages. As used herein, the terms "machine-readable medium", "computer-readable medium" refer to any computer program product, device and / or means (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium for receiving machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.

[0093] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) to display information to the user, and having a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and the input from the user can be received in any form, including sound, voice, or tactile input.

[0094] The systems and techniques described herein can be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an embodiment of the systems and techniques described herein), or includes any combination of such back-end components, middleware components, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.

[0095] A computing system may include clients and servers. Clients and servers are generally remote from each other and generally interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

[0096] A number of embodiments have been described, however, it will be understood that various modifications can be made without departing from the spirit and scope of the invention.

[0097] In addition, the logic flows depicted in the accompanying drawings do not necessarily need to be performed in the particular order shown or in sequence to achieve the desired results. In addition, other steps may be provided, or steps may be removed from the described flow, and other components may be added to or removed from the described system. Therefore, other embodiments are within the scope of the appended claims.

Claims

1. A method comprising: in response to receiving a share input from a local user at a local client device, sending a file from the local client device to a recipient; In response to sending the file, storing a sharing record on the local client device, the sharing record identifying the file and the recipient; In response to receiving a modification input that modifies the file, determining that the sharing record identifies the file and the recipient and indicates that the file has been shared; as well as Based on determining that the sharing record identifies the file and the recipient and indicates that the file has been shared, sending of at least a portion of the file to the recipient is initiated, the sharing record indicating that the file has been previously shared by the local user and the recipient.

2. The method according to claim 1, wherein: The recipient includes at least one of a remote user, a user profile, and a remote user device.

3. The method according to claim 1, wherein: Initiating the sending of the at least a portion of the file to the recipient includes prompting the local user to send the at least a portion of the file to the recipient.

4. The method according to claim 1, wherein: The application that sends the file in response to the sharing input is different from the application that initiated the sending of the at least a portion of the file to the recipient.

5. The method according to claim 1, wherein: The file is stored on the local client device and is not accessible to the recipient.

6. The method according to claim 1, wherein: The at least a portion of the file comprises a modified portion of the file.

7. The method according to claim 1, wherein: Initiating the sending of the at least a portion of the file to the recipient comprises: retrieving a contact record associated with the recipient; Extracting a contact address from the contact record; and The local user is prompted to send the at least a portion of the file to the extracted contact address.

8. The method according to claim 7, wherein: The contact address is different from an address to which the local client device sends the file in response to receiving the share input into the local client device from the local user.

9. The method according to claim 1, wherein: Initiating transmission of the at least a portion of the file to the recipient is performed after closing an application via which the modification input is received.

10. The method according to claim 1, wherein: The file is not stored on any computing device other than the local client device and a recipient client device associated with the recipient.

11. The method according to claim 1, wherein: The sharing input includes a selection of a share button located in a word processor application or a spreadsheet application.

12. The method according to claim 1, wherein: The sharing input includes instructions to cause an email program to send the file to the recipient, the file being attached to an email having an email address associated with the recipient.

13. A non-transitory computer-readable storage medium, comprising instructions stored on the non-transitory computer-readable storage medium, the instructions being configured, when executed by at least one processor, to cause a local client device to: in response to receiving a share input from a local user at the local client device, sending a file from the local client device to a recipient; In response to sending the file, storing a sharing record on the local client device, the sharing record identifying the file and the recipient; In response to receiving a modification input that modifies the file, determining that the sharing record identifies the file and the recipient and indicates that the file has been shared; as well as Based on determining that the sharing record identifies the file and the recipient and indicates that the file has been shared, sending of at least a portion of the file to the recipient is initiated, the sharing record indicating that the file has been previously shared by the local user and the recipient.

14. The non-transitory computer-readable storage medium of claim 13, wherein: The file is stored on the local client device and is not accessible to the recipient.

15. The non-transitory computer-readable storage medium of claim 13, wherein: The at least a portion of the file comprises a modified portion of the file.

16. The non-transitory computer-readable storage medium of claim 13, wherein: Initiating the sending of the at least a portion of the file to the recipient comprises: retrieving a contact record associated with the recipient; Extracting a contact address from the contact record; and The local user is prompted to send the at least a portion of the file to the extracted contact address.

17. The non-transitory computer-readable storage medium of claim 16, wherein: The contact address is different from an address to which the local client device sends the file in response to receiving the sharing input.

18. The non-transitory computer-readable storage medium of claim 13, wherein: Initiating the sending is performed after closing an application via which the modification input is received.

19. A device comprising: at least one processor; as well as at least one memory device, the at least one memory device comprising instructions stored on the at least one memory device, the instructions, when accessed by the at least one processor, causing the apparatus to: In response to receiving a sharing input from a local user at a local client device, sending a file from the local client device to a recipient, the sharing input comprising at least one of: Selection of a share button placed in a word processor application or a spreadsheet application; and instructions causing an email program to send the file to the recipient, the file being attached to an email having an email address associated with the recipient; In response to sending the file, storing a sharing record on the local client device, the sharing record identifying the file and the recipient; In response to receiving a modification input that modifies the file, determining that the sharing record identifies the file and the recipient and indicates that the file has been shared; as well as Based on determining that the sharing record identifies the file and the recipient and indicates that the file has been shared, sending of at least a portion of the file to the recipient is initiated, the sharing record indicating that the file has been previously shared by the local user and the recipient.

20. The apparatus of claim 19, wherein: The application that sends the file in response to the sharing input is different from the application that initiated the sending of the at least a portion of the file to the recipient.

21. The apparatus of claim 19, wherein: The at least a portion of the file comprises a modified portion of the file.

Citation Information

Patent Citations

  • Synchronization of Shared Folders and Files

    US20160085769A1

  • Sharing a file with a single contact

    US20170102852A1

  • Methods and program products for communicating file modifications during a collaboration event

    US8516050B1