我的应用程序用GPS奇怪的GetLoationFunction崩溃



应用在getlasthoning位置崩溃我不知道为什么它在那里崩溃我还将所有所需的权限包括在主节中它在

上崩溃

位置= locationManager.getLastnoningLocation(locationManager.network_provider);

public class AddressSelect extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
LocationManager locationManager;
myloclis loc;
String addressdelv="";
static ArrayList<Integer> prices;
static ArrayList<String> quantities;
static ArrayList<String> namesorder;
Button submitorder;
Marker marker;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_address_select);
    prices=getIntent().getIntegerArrayListExtra("Prices");
    quantities=getIntent().getStringArrayListExtra("quantityneeded");
    namesorder=getIntent().getStringArrayListExtra("Productsnames");
    submitorder=(Button)findViewById(R.id.submitorder);
    submitorder.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(addressdelv.equals("")){
                Toast.makeText(getApplicationContext(),"Please select a valid location",Toast.LENGTH_LONG).show();
            }else{
                Intent i = new Intent(AddressSelect.this,OrderSummary.class).putExtra("Productsnames",namesorder).putExtra("quantityneeded",quantities).putExtra("Prices",prices).putExtra("addressdelv",addressdelv);
                startActivity(i);
            }
        }
    });
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    LatLng cairo = new LatLng(30.0444, 31.2357);
   // mMap.addMarker(new MarkerOptions().position(cairo).title("Marker in Cairo"));
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(cairo,10));
    getlocation();
    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

        @Override
        public void onMapClick(LatLng latLng) {
            if (marker != null) {
                marker.remove();
            }
            marker = mMap.addMarker(new MarkerOptions()
                    .position(latLng)
                    .icon(BitmapDescriptorFactory
                            .defaultMarker(BitmapDescriptorFactory.HUE_RED)));
            Geocoder coder = new Geocoder(getApplicationContext(), Locale.getDefault());
            List<Address> addressList;
            try{
                addressList=coder.getFromLocation(latLng.latitude,latLng.longitude,1);
                if(!addressList.isEmpty()){
                    addressdelv=addressList.get(0).getAddressLine(0);
                    Toast.makeText(getApplicationContext(),addressdelv,Toast.LENGTH_LONG).show();
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));
                }else{
                    Toast.makeText( getApplicationContext(),"We don't deliver to this location sorry",Toast.LENGTH_LONG).show();
                }
            }catch (Exception e){
                Toast.makeText( getApplicationContext(),"Cant get your address check network",Toast.LENGTH_LONG).show();
            }
        }
    });
}

public void getlocation(){
    if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED&&ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED&&ActivityCompat.checkSelfPermission(this,Manifest.permission.INTERNET)!=PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
    }else{
        Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        if (location != null) {
            LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());
            if (marker != null) {
                marker.remove();
            }
            marker = mMap.addMarker(new MarkerOptions()
                    .position(latLng)
                    .icon(BitmapDescriptorFactory
                            .defaultMarker(BitmapDescriptorFactory.HUE_RED)));
            Geocoder coder = new Geocoder(getApplicationContext(), Locale.getDefault());
            List<Address> addressList;
            try{
                addressList=coder.getFromLocation(latLng.latitude,latLng.longitude,1);
                if(!addressList.isEmpty()){
                    addressdelv=addressList.get(0).getAddressLine(0);
                    Toast.makeText(getApplicationContext(),addressdelv,Toast.LENGTH_LONG).show();
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));
                }else{
                    Toast.makeText( getApplicationContext(),"We don't deliver to this location sorry",Toast.LENGTH_LONG).show();
                }
            }catch (Exception e){
                Toast.makeText( getApplicationContext(),"Cant get your address check network",Toast.LENGTH_LONG).show();
            }
        }else{
           Toast.makeText(getApplicationContext(),"Can't get location sorry",Toast.LENGTH_LONG).show();
        }
    }
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case 1:
            getlocation();
            break;
    }
}
}

看起来您从未初始化locationManager,所以我猜您在尝试使用它时会得到NullPoInterException。您应该添加

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

另外,请参见:获取最后一个已知位置

相关内容

  • 没有找到相关文章

最新更新