दिलचस्प पोस्ट
स्ट्रेस कैसे इस्तेमाल किया जाना चाहिए? लिनक्स में प्रति प्रक्रिया की अधिकतम संख्या है? Gcloud क्लाइंट के बिना Google कंटेनर रजिस्ट्री का उपयोग करें कोबेर्टुरा के साथ कोड कवरेज के तरीकों को बाहर निकालें बैश चर असाइनमेंट में कमांड को त्रुटि नहीं मिली App.config से कनेक्शन स्ट्रिंग प्राप्त करें नेस्टेड लूपों को तोड़कर कैसे jquery के साथ दो divs स्पर्श पता लगाने के लिए? कैसे प्रोग्राम की मात्रा को सिस्टम मात्रा निर्धारित करें? अपाचे: क्लाइंट ने सर्वर कॉन्फ़िगरेशन से इनकार किया बटन क्लिक पर नई गतिविधि कैसे आरंभ करें स्टोरीबोर्ड को iPhone से लेकर iPad तक परिवर्तित करना Sails.js नेस्टेड एसोसिएशनों को आबाद करें क्या htmlspecialchars और mysql_real_escape_string मेरे PHP कोड को इंजेक्शन से सुरक्षित रखते हैं? एक सत्र व्हेरिएबल के रूप में फॉर्म डेटा संग्रहीत करना

एंड्रॉइड 6 पर स्थान अनुमति का अनुरोध कैसे करें

मैनिफ़ेस्ट फ़ाइल में मैं अनुमतियों को मोटे और ठीक जोड़ दिया, और जब मैं डिवाइस पर एंड्रॉइड 6 चलाता हूं, तो कुछ नहीं होता! मैं सब कुछ कोशिश करता हूं लेकिन स्थान अपडेट प्राप्त करने का कोई तरीका नहीं …

मैं क्या गलत कर रहा हूं?

public class MainActivity extends AppCompatActivity implements LocationListener { LocationManager locationManager; String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); provider = locationManager.getBestProvider(new Criteria(), false); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } Location location = locationManager.getLastKnownLocation(provider); if (location != null) { Log.i("Location Info", "Location achieved!"); } else { Log.i("Location Info", "No location :("); } } @Override protected void onResume() { super.onResume(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } locationManager.requestLocationUpdates(provider, 400, 1, this); } @Override protected void onPause() { super.onPause(); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } locationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { Double lat = location.getLatitude(); Double lng = location.getLongitude(); Log.i("Location info: Lat", lat.toString()); Log.i("Location info: Lng", lng.toString()); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } public void getLocation(View view) { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } Location location = locationManager.getLastKnownLocation(provider); onLocationChanged(location); } } 

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड 6 पर स्थान अनुमति का अनुरोध कैसे करें"

आपको रनटाइम पर स्थान अनुमति के लिए वास्तव में अनुरोध करने की ज़रूरत है (यह बताते हुए आपके कोड में टिप्पणियां देखें)

स्थान की अनुमति के अनुरोध करने के लिए यहां पर परीक्षण किया गया और कोड काम किया गया है।

android.Manifest आयात करना सुनिश्चित करें। android.Manifest :

 import android.Manifest; 

तब इस कोड को गतिविधि में डालें:

 public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99; public boolean checkLocationPermission() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION)) { // Show an explanation to the user *asynchronously* -- don't block // this thread waiting for the user's response! After the user // sees the explanation, try again to request the permission. new AlertDialog.Builder(this) .setTitle(R.string.title_location_permission) .setMessage(R.string.text_location_permission) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //Prompt the user once explanation has been shown ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_LOCATION); } }) .create() .show(); } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_LOCATION); } return false; } else { return true; } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_LOCATION: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // location-related task you need to do. if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { //Request location updates: locationManager.requestLocationUpdates(provider, 400, 1, this); } } else { // permission denied, boo! Disable the // functionality that depends on this permission. } return; } } } 

तो फिर आप केवल अपने onResume() को checkLocationPermission() कॉल करने के लिए ओवरराइड संशोधित करेंगे।

 @Override protected void onResume() { super.onResume(); if (checkLocationPermission()) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { //Request location updates: locationManager.requestLocationUpdates(provider, 400, 1, this); } } }