Step 1:
Add play services location in build.gradle
compile 'com.google.android.gms:play-services-location:11.4.2'
Step 2:
Add Permission in AndroidManifestFile.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Step 3 :
package org.pratap.userlocation; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.location.Location; import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationServices; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; public class MainActivity extends AppCompatActivity { /** * Represents a geographical location. */ protected Location mLastLocation; int REQUEST_PERMISSIONS_REQUEST_CODE = 1001; FusedLocationProviderClient mFusedLocationClient; private TextView mLatitudeText; private TextView mLongitudeText; Button btn_getLocation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); btn_getLocation = (Button) findViewById(R.id.btn_get_location); mLatitudeText = (TextView) findViewById((R.id.mLatitudeText)); mLongitudeText = (TextView) findViewById((R.id.mLongitudeText)); btn_getLocation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!checkPermissions()) { requestPermissions(); } else { getLastLocation(); } } }); } /** * Return the current state of the permissions needed. */ private boolean checkPermissions() { int permissionState = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); return permissionState == PackageManager.PERMISSION_GRANTED; } @SuppressWarnings("MissingPermission") private void getLastLocation() { mFusedLocationClient.getLastLocation() .addOnCompleteListener(this, new OnCompleteListener<Location>() { @Override public void onComplete(@NonNull Task<Location> task) { if (task.isSuccessful() && task.getResult() != null) { mLastLocation = task.getResult(); mLatitudeText.setText("Latitude : "+ mLastLocation.getLatitude() + ""); mLongitudeText.setText("Longitude : "+ mLastLocation.getLongitude() + ""); } else { showMessage("No Location found"); } } }); } public void showMessage(String message) { if (message == null || message.length() == 0) return; Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } private void requestPermissions() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { getLastLocation(); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSIONS_REQUEST_CODE); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE) { if (grantResults.length <= 0) { } else if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission granted. getLastLocation(); } else { Intent intent = new Intent(); intent.setAction( Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", BuildConfig.APPLICATION_ID, null); intent.setData(uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } } } }
No comments:
Post a Comment