如何在onGeolocationPermissionsShowPrompt中显示弹出窗口

时间:2012-05-04 14:37:00

标签: android geolocation android-webview android-alertdialog

我遇到了地理定位权限没有出现在webview中的问题,我不得不添加以下自动授予权限的代码。

 mWebView.setWebChromeClient(new WebChromeClient() {
        @Override
            public void onGeolocationPermissionsShowPrompt(String origin, 
                                                           GeolocationPermissions.Callback callback) 
            {

                  callback.invoke(origin,true,false);
            }               
       });     
 }

一切正常。现在我想在此代码中显示自定义弹出窗口,而不是给予自动权限。

1 个答案:

答案 0 :(得分:2)

我的解决方案是在setWebChromeClient中创建一个AlertDialog。在这种情况下,我决定用户始终必须确认是否共享您的位置。

reportingView.setWebChromeClient(new WebChromeClient() {
             public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
                    final GeolocationPermissions.Callback callbackF = callback;
                    final String originF = origin;
                    AlertDialog.Builder builder = new AlertDialog.Builder(_context);
                    builder.setTitle("Locations");
                    builder.setMessage("MyApp want to know your location")
                    .setCancelable(true)
                    .setPositiveButton("Share location", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           callbackF.invoke(originF, true, false);
                       }
                    }).setNegativeButton("Decline", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           callbackF.invoke(originF, false, false);
                       }
                    });
                    AlertDialog alert = builder.create();
                    alert.show();
                 }
                });