| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright 2014 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <sample> |
| <name>PermissionRequest</name> |
| <group>Content</group> |
| <package>com.example.android.permissionrequest</package> |
| |
| <minSdk>21</minSdk> |
| |
| <strings> |
| <intro> |
| <![CDATA[ |
| This sample shows how to handle PermissionRequest coming from web apps inside of a |
| WebView. |
| ]]> |
| </intro> |
| </strings> |
| |
| <template src="base"/> |
| <template src="FragmentView"/> |
| <common src="logger"/> |
| <common src="activities"/> |
| |
| <metadata> |
| <status>PUBLISHED</status> |
| <categories>Content</categories> |
| <technologies>Android</technologies> |
| <languages>Java</languages> |
| <solutions>Mobile</solutions> |
| <level>INTERMEDIATE</level> |
| <icon>screenshots/icon_web.png</icon> |
| <screenshots> |
| <img>screenshots/image1.png</img> |
| <img>screenshots/image2.png</img> |
| </screenshots> |
| <api_refs> |
| <android>android.webkit.PermissionRequest</android> |
| <android>android.webkit.WebView</android> |
| <android>android.webkit.WebChromeClient</android> |
| </api_refs> |
| |
| <description> |
| <![CDATA[ |
| This sample demonstrates how to use the PermissionRequest API to |
| securely provide access to restricted system features (such as a |
| camera or microphone) from within a WebView. In this example, a dialog |
| is created to allow users to explicitly approve or reject each |
| request. |
| ]]> |
| </description> |
| |
| <intro> |
| <![CDATA[ |
| PermissionRequest can be used by setting up a custom WebChromeClient. |
| |
| ```java |
| mWebView.setWebChromeClient(mWebChromeClient); |
| ``` |
| |
| In you WebChromeClient implementation, you need to override |
| [onPermissionRequest][1]. This method is called when the web content |
| is requesting permission to access some resources, providing an |
| opportunity to approve or reject the request. In this implementation, |
| we display a dialog to allow the user to approve or reject any |
| request. In other applications, you may want to implement a whitelist |
| of allowed APIs. Also, override [onPermissionRequestCanceled][2] for |
| handling cancellation of the PermissionRequest by the web content. |
| |
| When the user confirms or denies the request, you can respond back to |
| the web content by [grant][3] or [deny][4] respectively. |
| |
| ```java |
| mPermissionRequest.grant(mPermissionRequest.getResources()); |
| ``` |
| |
| This sample provides the web content from the assets folder in the |
| app. Since WebView is not allowed to use getUserMedia from a "file://" |
| URL, the app uses the SimpleWebServer class to provide the content via |
| "http://localhost". |
| |
| [1]: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onPermissionRequest(android.webkit.PermissionRequest) |
| [2]: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onPermissionRequestCanceled(android.webkit.PermissionRequest) |
| [3]: http://developer.android.com/reference/android/webkit/PermissionRequest.html#grant(java.lang.String[]) |
| [4]: http://developer.android.com/reference/android/webkit/PermissionRequest.html#deny() |
| ]]> |
| </intro> |
| </metadata> |
| |
| </sample> |