on develop help sign in
Handle onPermissionRequest
448b48fRobert Klotzner
reflex-dom/java/org/reflexfrp/reflexdom/MainWidget.java+27−2
@@ -10,11 +10,16 @@ import android.webkit.JavascriptInterface;
10import android.webkit.WebSettings;
10import android.webkit.WebSettings;
11import android.webkit.WebView;
11import android.webkit.WebView;
12import android.webkit.WebViewClient;
12import android.webkit.WebViewClient;
13+import android.webkit.WebChromeClient;
14+import android.webkit.PermissionRequest;
15+import android.net.Uri;
16+import android.annotation.TargetApi;
17+import android.os.Build;
13
18
14import java.nio.charset.StandardCharsets;
19import java.nio.charset.StandardCharsets;
15
20
16public class MainWidget {
21public class MainWidget {
17− private static Object startMainWidget(Activity a, String url, long jsaddleCallbacks, final String initialJS) {
22+ private static Object startMainWidget(final Activity a, String url, long jsaddleCallbacks, final String initialJS) {
18 CookieManager.setAcceptFileSchemeCookies(true); //TODO: Can we do this just for our own WebView?
23 CookieManager.setAcceptFileSchemeCookies(true); //TODO: Can we do this just for our own WebView?
19
24
20 // Remove title and notification bars
25 // Remove title and notification bars
@@ -37,7 +42,27 @@ public class MainWidget {
37 public void onPageFinished(WebView _view, String _url) {
42 public void onPageFinished(WebView _view, String _url) {
38 wv.evaluateJavascript(initialJS, null);
43 wv.evaluateJavascript(initialJS, null);
39 }
44 }
45+ });
46+
47+ wv.setWebChromeClient(new WebChromeClient() {
48+ // Need to accept permissions to use the camera and audio
49+ @Override
50+ public void onPermissionRequest(final PermissionRequest request) {
51+ a.runOnUiThread(new Runnable() {
52+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
53+ @Override
54+ public void run() {
55+ // Make sure the request is coming from the file system ...
56+ if(request.getOrigin().toString().startsWith("file://")) {
57+ request.grant(request.getResources());
58+ }
59+ else {
60+ request.deny();
61+ }
62+ }
63+ });
64+ }
40− });
65+ });
41
66
42 wv.addJavascriptInterface(new JSaddleCallbacks(jsaddleCallbacks), "jsaddle");
67 wv.addJavascriptInterface(new JSaddleCallbacks(jsaddleCallbacks), "jsaddle");
43
68