Dans mon application, je veux obtenir l'emplacement actuel avec l'adresse complète. Dans mon cas, je reçois l'emplacement dans la version Android moins 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();
}
L'autorisation Manifest
<uses-permission android:name=android.permission.ACCESS_FINE_LOCATION></uses-permission>
<uses-permission android:name=android.permission.ACCESS_COARSE_LOCATION></uses-permission>
Je ne reçois aucune sortie sur Pixel XL, mais quand je vérifie sur l'émulateur de pixel en studio et android autre appareil (mi redmi la version Android 6.0), il fonctionne très bien. s'il vous plaît vérifier et laissez-moi savoir où ai-je tort.
- Lieu ne fonctionne pas sur pixel xl
- Service de localisation prendre beaucoup de temps.
- Pourquoi valeur NULL vient, au-dessous j'ai ajouté le mettre en
Merci pour votre aide













