0

I created a webview app for a project. I want to access permission for location (ACCES_FINE_LOCATION) in android this is my java code:

super.onCreate(savedInstanceState);
        try {
            this.getSupportActionBar().hide();
        } catch (NullPointerException e) {
        }
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.webView1);
        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onGeolocationPermissionsShowPrompt(final String origin,
                                                           final GeolocationPermissions.Callback callback) {


                final boolean remember = false;
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("Locations");
                builder.setMessage("Would like to use your Current Location ")
                        .setCancelable(true).setPositiveButton("Allow", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {                    // origin, allow, remember
                        callback.invoke(origin, true, remember);
                    }
                }).setNegativeButton("Don't Allow", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {// origin, allow, remember
                        callback.invoke(origin, false, remember);
                    }
                });
                AlertDialog alert = builder.create();
                alert.show();
            }


        });
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);
                return true;

            }
        });


        webSettings.setJavaScriptEnabled(true);
        webSettings.setGeolocationEnabled(true);
        mWebView.getSettings().setAppCacheEnabled(true);
        mWebView.getSettings().setDatabaseEnabled(true);
        mWebView.getSettings().setDomStorageEnabled(true);
        mWebView.getSettings().setGeolocationDatabasePath(getFilesDir().getPath());


        mWebView.loadUrl("https://church-map-site.herokuapp.com/");

In my App.js file I have this code:

navigator.geolocation.getCurrentPosition(positions => {
      let lat, lon;
      /*
      setLat(positions.coords.latitude);
      setLon(positions.coords.longitude);
      */
      lat = positions.coords.latitude;
      lon = positions.coords.longitude;
      setLocatie({
        lat: lat,
        lon: lon
      })
      fetch(`${url}/locatii/${lat}/${lon}`)
        .then(res => res.json())
        .then(data => {
          setData(data);
          //console.log(data)
        })
        .catch(err => console.log(err))
    }, err => alert("eroare", err));

When I am running app is shows me this:alow image

When I click on alow it shows me alert from error handling from the navigator error image In manifest.xml I wrote permission for access location <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> What I missed?

Cosmin Ciolacu
  • 406
  • 9
  • 29
  • Post Android Marshmallow you have to explicitly specify to get user permission.. Have you done that? – sanjeev Nov 07 '19 at 09:46
  • Shows me how to implement please – Cosmin Ciolacu Nov 07 '19 at 09:53
  • Refer this https://stackoverflow.com/questions/36936914/list-of-android-permissions-normal-permissions-and-dangerous-permissions-in-api and this https://stackoverflow.com/questions/44724375/android-correct-way-to-handle-a-dangerous-permission-that-must-be-granted-for – sanjeev Nov 07 '19 at 10:01
  • Possible duplicate of [Android - Correct way to handle a dangerous permission that must be granted for app to work?](https://stackoverflow.com/questions/44724375/android-correct-way-to-handle-a-dangerous-permission-that-must-be-granted-for) – sanjeev Nov 07 '19 at 10:01

0 Answers0