Cum pentru a obține locația curentă cu adresa completă în Android 7.0 și Bove

voturi
0

În aplicația mea Vreau pentru a obține locația curentă cu adresa completă. În cazul meu eu sunt obtinerea de locație în versiunea Android mai puțin de 6.0

final FloatingActionButton btn = view.findViewById(R.id.locAndDate);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            if (checkPermission(TXT_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)) {
                    showPermissionExplanantion(TXT_LOCATION);
                } else if (!permission.checkPermissionPrefrences(location)) {
                    requestPermission(TXT_LOCATION);
                    permission.updatePermission(location);
                } else {
                    Toast.makeText(getActivity(), Please allow Location Permission in you device setting, Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(getActivity(), Location Permission Granted, Toast.LENGTH_SHORT).show();
                getLocation();

            }

        }
    });

    return view;

}



void getLocation() {
    try {
        locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50000, 5, this);
    } catch (SecurityException e) {
        e.printStackTrace();
    }
}

@Override
public void onLocationChanged(Location location) {

    geocoder = new Geocoder(getActivity(), Locale.getDefault());
    List<Address> addresseslList;
    try {
        addresseslList = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
        str += addresseslList.get(0).getAddressLine(0);

    } catch (IOException e) {
        e.printStackTrace();
    }
    loc.setText(str);
    System.out.print(str);
}

@Override
public void onProviderDisabled(String provider) {
    Toast.makeText(getActivity(), Please Enable GPS and Internet, Toast.LENGTH_SHORT).show();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

/*Check Permission*/
private int checkPermission(int permission) {
    int status = PackageManager.PERMISSION_DENIED;

    switch (permission) {
        case TXT_LOCATION:
            status = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION);
            break;

    }
    return status;
}

/*Request Permission*/
private void requestPermission(int permission) {

    switch (permission) {
        case TXT_LOCATION:
            ActivityCompat.requestPermissions(getActivity(), new String[]{ Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_LOCATION);
            break;
    }
}

/*Explaination*/
private void showPermissionExplanantion(final int permission) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    if (permission == TXT_LOCATION) {
        builder.setMessage(This app need to access you current location.. please allow);
        builder.setTitle(Location Permission Needed);
    }
    builder.setPositiveButton(try again, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (permission == TXT_LOCATION) {
                requestPermission(TXT_LOCATION);
            }
        }
    });
    builder.setNegativeButton(cancel, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

Permisiunea Manifest

 <uses-permission android:name=android.permission.ACCESS_FINE_LOCATION></uses-permission>
<uses-permission android:name=android.permission.ACCESS_COARSE_LOCATION></uses-permission>

Eu nu primesc nici o ieșire Pixel XL, dar când am verifica pe emulator de pixeli în studio Android și alte dispozitive (mi redmi versiunea Android 6.0) funcționează bine. vă rugăm să verificați și să-mi spuneți unde am greșit.

  1. Locația nu funcționează pe xl pixeli
  2. Serviciul de localizare dura mult timp.
  3. De ce valoare nulă se apropie, mai jos am adăugat afară pune

producție

Vă mulțumim pentru a vă ajuta

Întrebat 31/03/2018 la 14:08
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

Cum pentru a obține locația curentă cu adresa completă în Android 7.0 și Bove

voturi
0

În aplicația mea Vreau pentru a obține locația curentă cu adresa completă. În cazul meu eu sunt obtinerea de locație în versiunea Android mai puțin de 6.0

final FloatingActionButton btn = view.findViewById(R.id.locAndDate);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            if (checkPermission(TXT_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)) {
                    showPermissionExplanantion(TXT_LOCATION);
                } else if (!permission.checkPermissionPrefrences("location")) {
                    requestPermission(TXT_LOCATION);
                    permission.updatePermission("location");
                } else {
                    Toast.makeText(getActivity(), "Please allow Location Permission in you device setting", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(getActivity(), "Location Permission Granted", Toast.LENGTH_SHORT).show();
                getLocation();

            }

        }
    });

    return view;

}



void getLocation() {
    try {
        locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50000, 5, this);
    } catch (SecurityException e) {
        e.printStackTrace();
    }
}

@Override
public void onLocationChanged(Location location) {

    geocoder = new Geocoder(getActivity(), Locale.getDefault());
    List<Address> addresseslList;
    try {
        addresseslList = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
        str += addresseslList.get(0).getAddressLine(0);

    } catch (IOException e) {
        e.printStackTrace();
    }
    loc.setText(str);
    System.out.print(str);
}

@Override
public void onProviderDisabled(String provider) {
    Toast.makeText(getActivity(), "Please Enable GPS and Internet", Toast.LENGTH_SHORT).show();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

/*Check Permission*/
private int checkPermission(int permission) {
    int status = PackageManager.PERMISSION_DENIED;

    switch (permission) {
        case TXT_LOCATION:
            status = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION);
            break;

    }
    return status;
}

/*Request Permission*/
private void requestPermission(int permission) {

    switch (permission) {
        case TXT_LOCATION:
            ActivityCompat.requestPermissions(getActivity(), new String[]{ Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_LOCATION);
            break;
    }
}

/*Explaination*/
private void showPermissionExplanantion(final int permission) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    if (permission == TXT_LOCATION) {
        builder.setMessage("This app need to access you current location.. please allow");
        builder.setTitle("Location Permission Needed");
    }
    builder.setPositiveButton("try again", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (permission == TXT_LOCATION) {
                requestPermission(TXT_LOCATION);
            }
        }
    });
    builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

Permisiunea Manifest

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

Eu nu primesc nici o ieșire Pixel XL, dar când am verifica pe emulator de pixeli în studio Android și alte dispozitive (mi redmi versiunea Android 6.0) funcționează bine. vă rugăm să verificați și să-mi spuneți unde am greșit.

  1. Locația nu funcționează pe xl pixeli
  2. Serviciul de localizare dura mult timp.
  3. De ce valoare nulă se apropie, mai jos am adăugat afară pune

producție

Vă mulțumim pentru a vă ajuta

Publicat 31/03/2018 la 14:08
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more