| OLD | NEW |
| 1 <h1>Connect Apps with Web Intents</h1> | 1 <h1>Connect Apps with Web Intents</h1> |
| 2 | 2 |
| 3 <p class="warning"> |
| 4 <b>Warning: </b> |
| 5 Deprecated in Chrome 24. |
| 6 Web intents are no longer supported. |
| 7 </p> |
| 3 | 8 |
| 4 <p> | 9 <p> |
| 5 <a href="http://webintents.org/">Web Intents</a> | 10 <a href="http://webintents.org/">Web Intents</a> |
| 6 allow your application to quickly communicate | 11 allow your application to quickly communicate |
| 7 with other applications on the user's system and inside their browser. | 12 with other applications on the user's system and inside their browser. |
| 8 Your application can register to handle specific user actions | 13 Your application can register to handle specific user actions |
| 9 such as editing images via the <code>manifest.json</code>; | 14 such as editing images via the <code>manifest.json</code>; |
| 10 your application can also invoke actions to be handled by other applications. | 15 your application can also invoke actions to be handled by other applications. |
| 11 </p> | 16 </p> |
| 12 | 17 |
| 13 <p>Pacakged apps use Web Intents as their primary mechanism for inter-app | 18 <p>Pacakged apps use Web Intents as their primary mechanism for inter-app |
| 14 communication.</p> | 19 communication.</p> |
| 15 | 20 |
| 16 <p class="note"> | 21 <p class="note"> |
| 17 <b>API Samples: </b> | 22 <b>API Samples: </b> |
| 18 Want to play with the code? | 23 Want to play with the code? |
| 19 Check out the | 24 Check out the |
| 20 <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/webinten
ts">webintents</a> sample. | 25 <a href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/webinten
ts">webintents</a> sample. |
| 21 </p> | 26 </p> |
| 22 | 27 |
| 23 <h2 id="register">Register your app to handle an action</h2> | 28 <h2 id="register">Register your app to handle an action</h2> |
| 24 | 29 |
| 30 <p class="warning"> |
| 31 <b>Warning: </b> |
| 32 Deprecated in Chrome 24. |
| 33 Web intents are no longer supported. |
| 34 </p> |
| 35 |
| 25 <p> | 36 <p> |
| 26 You must supply the intent in the manifest: | 37 You must supply the intent in the manifest: |
| 27 </p> | 38 </p> |
| 28 | 39 |
| 29 <pre> | 40 <pre> |
| 30 "intents":{ | 41 "intents":{ |
| 31 "http://webintents.org/edit" : [{ | 42 "http://webintents.org/edit" : [{ |
| 32 "title" : "Best Image editing app", | 43 "title" : "Best Image editing app", |
| 33 "type" : ["image/*"] | 44 "type" : ["image/*"] |
| 34 }] | 45 }] |
| 35 } | 46 } |
| 36 </pre> | 47 </pre> |
| 37 | 48 |
| 38 <p> | 49 <p> |
| 39 Unlike extensions and hosted apps, packaged applications do not | 50 Unlike extensions and hosted apps, packaged applications do not |
| 40 need a "href" attribute in the manifest declaration, this is | 51 need a "href" attribute in the manifest declaration, this is |
| 41 because packaged apps have a single entry point for | 52 because packaged apps have a single entry point for |
| 42 launch - the <code>onLaunched</code> event. | 53 launch - the <code>onLaunched</code> event. |
| 43 </p> | 54 </p> |
| 44 | 55 |
| 45 <h2 id="content">Handling content types</h2> | 56 <h2 id="content">Handling content types</h2> |
| 46 | 57 |
| 58 <p class="warning"> |
| 59 <b>Warning: </b> |
| 60 Deprecated in Chrome 24. |
| 61 Web intents are no longer supported. |
| 62 </p> |
| 63 |
| 47 <p> | 64 <p> |
| 48 Your application can be the user's preferred choice for handling a file type. | 65 Your application can be the user's preferred choice for handling a file type. |
| 49 For example, your application could handle viewing images or viewing pdfs. | 66 For example, your application could handle viewing images or viewing pdfs. |
| 50 You must supply the intent in the manifest | 67 You must supply the intent in the manifest |
| 51 and use the "http://webintents.org/view" action: | 68 and use the "http://webintents.org/view" action: |
| 52 </p> | 69 </p> |
| 53 <p>To be able declare your application's ability to view RSS and ATOM | 70 <p>To be able declare your application's ability to view RSS and ATOM |
| 54 feeds, you would add the following to your manifest. | 71 feeds, you would add the following to your manifest. |
| 55 </p> | 72 </p> |
| 56 <pre> | 73 <pre> |
| (...skipping 13 matching lines...) Expand all Loading... |
| 70 // App Launched | 87 // App Launched |
| 71 if(intent.action == "http://webinents.org/view" && | 88 if(intent.action == "http://webinents.org/view" && |
| 72 intent.type == "application/atom+xml") { | 89 intent.type == "application/atom+xml") { |
| 73 | 90 |
| 74 // obtain the ATOM feed data. | 91 // obtain the ATOM feed data. |
| 75 var data = intent.data; | 92 var data = intent.data; |
| 76 } | 93 } |
| 77 }); | 94 }); |
| 78 </pre> | 95 </pre> |
| 79 | 96 |
| 97 <h2 id="launching">Launching an app with a file</h2> |
| 80 | 98 |
| 81 <h2 id="launching">Launching an app with a file</h2> | 99 <p class="warning"> |
| 100 <b>Warning: </b> |
| 101 Deprecated in Chrome 24. |
| 102 Web intents are no longer supported. |
| 103 </p> |
| 104 |
| 82 <p> | 105 <p> |
| 83 If your app handles the <code>view</code> intent, | 106 If your app handles the <code>view</code> intent, |
| 84 it is possible to launch it from the command line with a file as a parameter. | 107 it is possible to launch it from the command line with a file as a parameter. |
| 85 </p> | 108 </p> |
| 86 <pre> | 109 <pre> |
| 87 chrome.exe --app-id [app_id] [path_to_file] | 110 chrome.exe --app-id [app_id] [path_to_file] |
| 88 </pre> | 111 </pre> |
| 89 <p> | 112 <p> |
| 90 This will implicity launch your application with an intent payload populated | 113 This will implicity launch your application with an intent payload populated |
| 91 with the action set to "http://webintents.org/view", the type set to the | 114 with the action set to "http://webintents.org/view", the type set to the |
| 92 mime-type of the file and the data as a <code>FileEntry</code> object. | 115 mime-type of the file and the data as a <code>FileEntry</code> object. |
| 93 </p> | 116 </p> |
| 94 <pre> | 117 <pre> |
| 95 chrome.app.runtime.onLaunched(function(intent) { | 118 chrome.app.runtime.onLaunched(function(intent) { |
| 96 // App Launched | 119 // App Launched |
| 97 var data = intent.data; | 120 var data = intent.data; |
| 98 }); | 121 }); |
| 99 </pre> | 122 </pre> |
| 100 | 123 |
| 101 <h2 id="launching">Manipulating the file</h2> | 124 <h2 id="launching">Manipulating the file</h2> |
| 125 |
| 126 <p class="warning"> |
| 127 <b>Warning: </b> |
| 128 Deprecated in Chrome 24. |
| 129 Web intents are no longer supported. |
| 130 </p> |
| 131 |
| 102 <p> | 132 <p> |
| 103 When your application is launched with a file as the parameter | 133 When your application is launched with a file as the parameter |
| 104 on the command-line, | 134 on the command-line, |
| 105 the <code>intent.data</code> property is a <code>FileEntry</code>. | 135 the <code>intent.data</code> property is a <code>FileEntry</code>. |
| 106 This is really cool because now you have a direct reference back to the physic
al | 136 This is really cool because now you have a direct reference back to the physic
al |
| 107 file on the disk, | 137 file on the disk, |
| 108 and you can write data back to it. | 138 and you can write data back to it. |
| 109 </p> | 139 </p> |
| 110 | 140 |
| 111 <pre> | 141 <pre> |
| (...skipping 12 matching lines...) Expand all Loading... |
| 124 | 154 |
| 125 // Create a new Blob and write it to log.txt. | 155 // Create a new Blob and write it to log.txt. |
| 126 var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'}); | 156 var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'}); |
| 127 writer.write(blob); | 157 writer.write(blob); |
| 128 }); | 158 }); |
| 129 } | 159 } |
| 130 }); | 160 }); |
| 131 </pre> | 161 </pre> |
| 132 | 162 |
| 133 <h2 id="return">Returning data to calling application</h2> | 163 <h2 id="return">Returning data to calling application</h2> |
| 164 |
| 165 <p class="warning"> |
| 166 <b>Warning: </b> |
| 167 Deprecated in Chrome 24. |
| 168 Web intents are no longer supported. |
| 169 </p> |
| 170 |
| 134 <p> | 171 <p> |
| 135 Lots of applications want to cooperate | 172 Lots of applications want to cooperate |
| 136 with the app that invoked them. | 173 with the app that invoked them. |
| 137 It's easy to send data back to the calling client | 174 It's easy to send data back to the calling client |
| 138 using <code>intent.postResult</code>: | 175 using <code>intent.postResult</code>: |
| 139 </p> | 176 </p> |
| 140 | 177 |
| 141 <pre> | 178 <pre> |
| 142 chrome.app.runtime.onLaunched(function(intent) { | 179 chrome.app.runtime.onLaunched(function(intent) { |
| 143 // App Launched | 180 // App Launched |
| 144 console.log(intent.action); | 181 console.log(intent.action); |
| 145 console.log(intent.type); | 182 console.log(intent.type); |
| 146 var data = intent.data; | 183 var data = intent.data; |
| 147 // Do something with the data; | 184 // Do something with the data; |
| 148 | 185 |
| 149 intent.postResult(newData); | 186 intent.postResult(newData); |
| 150 }); | 187 }); |
| 151 </pre> | 188 </pre> |
| 152 | 189 |
| 153 <h2 id="localize">Localizing your app title</h2> | 190 <h2 id="localize">Localizing your app title</h2> |
| 154 | 191 |
| 192 <p class="warning"> |
| 193 <b>Warning: </b> |
| 194 Deprecated in Chrome 24. |
| 195 Web intents are no longer supported. |
| 196 </p> |
| 197 |
| 155 <p> | 198 <p> |
| 156 If your application or extension is localized | 199 If your application or extension is localized |
| 157 as per the guidelines in | 200 as per the guidelines in |
| 158 <a href="i18n.html">Internationalization (i18n)</a>, | 201 <a href="i18n.html">Internationalization (i18n)</a>, |
| 159 you can localize the title of your intent in the picker | 202 you can localize the title of your intent in the picker |
| 160 using the exact same infrastructure: | 203 using the exact same infrastructure: |
| 161 </p> | 204 </p> |
| 162 | 205 |
| 163 <pre> | 206 <pre> |
| 164 "intents": { | 207 "intents": { |
| 165 "http://webintents.org/edit" : [{ | 208 "http://webintents.org/edit" : [{ |
| 166 "title" : "__MSG_intent_title__", | 209 "title" : "__MSG_intent_title__", |
| 167 "type" : ["image/*"], | 210 "type" : ["image/*"], |
| 168 "disposition" : "inline" | 211 "disposition" : "inline" |
| 169 }] | 212 }] |
| 170 } | 213 } |
| 171 </pre> | 214 </pre> |
| 172 | 215 |
| 173 <h2 id="invoke">Invoking an action</h2> | 216 <h2 id="invoke">Invoking an action</h2> |
| 217 |
| 218 <p class="warning"> |
| 219 <b>Warning: </b> |
| 220 Deprecated in Chrome 24. |
| 221 Web intents are no longer supported. |
| 222 </p> |
| 223 |
| 174 <p> | 224 <p> |
| 175 If your application needs to be able | 225 If your application needs to be able |
| 176 to use the functionality of another application, | 226 to use the functionality of another application, |
| 177 it can simply ask the browser for it. | 227 it can simply ask the browser for it. |
| 178 To ask for an application that supports image editing, | 228 To ask for an application that supports image editing, |
| 179 it's as simple as: | 229 it's as simple as: |
| 180 </p> | 230 </p> |
| 181 | 231 |
| 182 <pre> | 232 <pre> |
| 183 var intent = new WebKitIntent("http://webintents.org/edit", "image/png", "dataUr
i://"); | 233 var intent = new WebKitIntent("http://webintents.org/edit", "image/png", "dataUr
i://"); |
| 184 | 234 |
| 185 window.navigator.webkitStartActivity(intent, function(data) { | 235 window.navigator.webkitStartActivity(intent, function(data) { |
| 186 // The data from the remote application is returned here. | 236 // The data from the remote application is returned here. |
| 187 }); | 237 }); |
| 188 </pre> | 238 </pre> |
| 189 | 239 |
| 190 <h2 id="errors">Handling Errors and Exceptions</h2> | 240 <h2 id="errors">Handling Errors and Exceptions</h2> |
| 241 |
| 242 <p class="warning"> |
| 243 <b>Warning: </b> |
| 244 Deprecated in Chrome 24. |
| 245 Web intents are no longer supported. |
| 246 </p> |
| 247 |
| 191 <p> | 248 <p> |
| 192 If your service application needs to signal to the client application | 249 If your service application needs to signal to the client application |
| 193 that an unrecoverable error has occurred, | 250 that an unrecoverable error has occurred, |
| 194 then your application will need | 251 then your application will need |
| 195 to call <code>postError</code> on the intent object. | 252 to call <code>postError</code> on the intent object. |
| 196 This will signal to the client’s onError callback | 253 This will signal to the client’s onError callback |
| 197 that something has gone wrong. | 254 that something has gone wrong. |
| 198 </p> | 255 </p> |
| 199 | 256 |
| 200 <h3 id="client">Client</h3> | 257 <h3 id="client">Client</h3> |
| (...skipping 14 matching lines...) Expand all Loading... |
| 215 console.log(intent.action); | 272 console.log(intent.action); |
| 216 console.log(intent.type); | 273 console.log(intent.type); |
| 217 var data = intent.data; | 274 var data = intent.data; |
| 218 // Do something with the data; | 275 // Do something with the data; |
| 219 | 276 |
| 220 intent.postResult(newData); | 277 intent.postResult(newData); |
| 221 }); | 278 }); |
| 222 </pre> | 279 </pre> |
| 223 | 280 |
| 224 <p class="backtotop"><a href="#top">Back to top</a></p> | 281 <p class="backtotop"><a href="#top">Back to top</a></p> |
| OLD | NEW |