In API 5.x and below you will need
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
in AndroidManifest.xml .
But to allow permissions for geolocation on API 6.0+, you must request permission at run time .

To do this, use
private String mGeolocationOrigin; private GeolocationPermissions.Callback mGeolocationCallback; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // other setup myWebView.setWebChromeClient(new MyWebChromeClient()); } private WebChromeClient mWebChromeClient = new WebChromeClient() { @Override public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { // Geolocation permissions coming from this app Manifest will only be valid for devices with API_VERSION < 23. // On API 23 and above, we must check for permission, and possibly ask for it. final String permission = Manifest.permission.ACCESS_FINE_LOCATION; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ContextCompat.checkSelfPermission(MainActivity.this, permission) == PackageManager.PERMISSION_GRANTED) { // we're on SDK < 23 OR user has already granted permission callback.invoke(origin, true, false); } else { if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) { // user has denied this permission before and selected [/] DON'T ASK ME AGAIN // TODO Best Practice: show an AlertDialog explaining why the user could allow this permission, then ask again } else { // ask the user for permissions ActivityCompat.requestPermissions(MainActivity.this, new String[] {permission}, RP_ACCESS_LOCATION); mGeolocationOrigin = origin; mGeolocationCallback = callback; } } } }
and get the result:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case RP_ACCESS_LOCATION: boolean allow = false; if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
in your business.
source share