Come ottenere la posizione corrente con l'indirizzo completo in Android 7.0 e Bove

voti
0

Nella mia app voglio ottenere la posizione corrente con l'indirizzo completo. Nel mio caso mi sto posizione nella versione Android meno di 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();
}

Il permesso Manifest

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

Non ottengo alcun output sul Pixel XL ma quando verifico emulatore di pixel in studio Android e altri dispositivi (mi redmi Android versione 6.0) funziona benissimo. Si prega di controllare e fatemi sapere dove ho sbagliato.

  1. Posizione non lavorare su xl pixel
  2. Il servizio di localizzazione è voluto molto tempo.
  3. Perchè valore nullo è in arrivo, sotto ho aggiunto l'out put

Produzione

Grazie per aiutare

È pubblicato 31/03/2018 alle 14:08
fonte dall'utente
In altre lingue...                            


1 risposte

Come ottenere la posizione corrente con l'indirizzo completo in Android 7.0 e Bove

voti
0

Nella mia app voglio ottenere la posizione corrente con l'indirizzo completo. Nel mio caso mi sto posizione nella versione Android meno di 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();
}

Il permesso Manifest

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

Non ottengo alcun output sul Pixel XL ma quando verifico emulatore di pixel in studio Android e altri dispositivi (mi redmi Android versione 6.0) funziona benissimo. Si prega di controllare e fatemi sapere dove ho sbagliato.

  1. Posizione non lavorare su xl pixel
  2. Il servizio di localizzazione è voluto molto tempo.
  3. Perchè valore nullo è in arrivo, sotto ho aggiunto l'out put

Produzione

Grazie per aiutare

Risposto il 31/03/2018 a 14:08
fonte dall'utente

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