0

I am trying to implement OpenStreetMap in android studio. I successfully added the libraries as shown below.

enter image description here

This is my MainActivity:

package com.example.re.osm;

        import org.osmdroid.util.GeoPoint;
        import org.osmdroid.views.MapController;
        import org.osmdroid.views.MapView;

        import android.app.Activity;
        import android.content.Context;
        import android.location.Location;
        import android.location.LocationListener;
        import android.location.LocationManager;
        import android.os.Bundle;

public class MainActivity extends Activity {

    private MapView myOpenMapView;
    private MapController myMapController;

    LocationManager locationManager;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myOpenMapView = (MapView)findViewById(R.id.openmapview);
        myOpenMapView.setBuiltInZoomControls(true);
        myMapController = myOpenMapView.getController();
        myMapController.setZoom(12);

        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

        //for demo, getLastKnownLocation from GPS only, not from NETWORK
        Location lastLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if(lastLocation != null){
            updateLoc(lastLocation);
        }

    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener);
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, myLocationListener);
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        locationManager.removeUpdates(myLocationListener);
    }

    private void updateLoc(Location loc){
        GeoPoint locGeoPoint = new GeoPoint(loc.getLatitude(), loc.getLongitude());
        myMapController.setCenter(locGeoPoint);
        myOpenMapView.invalidate();
    }

    private LocationListener myLocationListener
            = new LocationListener(){

        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            updateLoc(location);
        }

        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub

        }

    };

}

This is my manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.re.osm"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


    <application
        android:icon="@drawable/ic_launcher"
        android:label="OSM" >
        <activity
            android:name=".MainActivity"
            android:label="OSM" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

But when I run the aplication, I get to see the error:

"call requires permission which may be rejected by the user:code should explictly check to see if the permission is available (with check permission) or explictly handle a potential securityexception"

How should I fix this? What steps should I follow?

Any ideas are appreciated?

Thanks

scai
  • 20,297
  • 4
  • 56
  • 72
Thomas
  • 121
  • 2
  • 12
  • I think you should be able to find solution here: https://stackoverflow.com/questions/32491960/android-check-permission-for-locationmanager – Josef Adamcik Aug 26 '17 at 17:03
  • 1
    Possible duplicate of [Android check permission for LocationManager](https://stackoverflow.com/questions/32491960/android-check-permission-for-locationmanager) – Josef Adamcik Aug 26 '17 at 17:03
  • 1
    Time to update, that version is super old – spy Aug 26 '17 at 21:42

0 Answers0