2015-04-20 6 views
14

में सेटिंग्स स्क्रीन पर रीडायरेक्ट किए बिना जीपीएस सक्षम कर सकता हूं, जीपीएस आधारित अनुप्रयोगों में, यह महत्वपूर्ण है कि उपयोगकर्ता अपने जीपीएस को सक्षम करे। यदि नहीं तो आमतौर पर हम एक संवाद दिखाते हैं कि उपयोगकर्ता "को इस कार्यक्षमता का उपयोग करने में सक्षम होने के लिए सेटिंग्स से अपने जीपीएस को सक्षम करना चाहिए"।एंड्रॉइड: क्या मैं जीपीएस को "Google मानचित्र" ऐप

जब उपयोगकर्ता ठीक दबाता है तो उसे सेटिंग पृष्ठ पर रीडायरेक्ट कर दिया जाएगा, मुझे यह समाधान पसंद नहीं है क्योंकि यह उपयोगकर्ता को एप्लिकेशन संदर्भ में सेटिंग्स के संदर्भ में ले जाता है।

मैंने देखा है कि "Google मानचित्र" एप्लिकेशन का एक बेहतर समाधान है, जो एक जीपीएस सुविधा की आवश्यकता होने पर एक साफ संवाद दिखाना है। उपयोगकर्ता के चयन पर "ठीक" जीपीएस सीधे को सेटिंग्स के लिए पुनर्निर्देशन के बिना सक्षम किया जाएगा।

क्या मैं "Google मानचित्र" ऐप की तरह सेटिंग स्क्रीन पर उपयोगकर्ता को रीडायरेक्ट किए बिना जीपीएस सक्षम कर सकता हूं?

चेकआउट छवि के नीचे:

Neat Dialog

+0

क्या आप सही आने के लिए तैयार थे? @ ए अलाकाडोमी –

+0

@ एंड्रेहोफमैन यह हमारे नए प्रोजेक्ट में पहले से ही मेरे सहकर्मी द्वारा किया गया था। रहस्य Google से नए एपीआई का उपयोग करना है, जो "google play services" से स्थान प्राप्त करने पर आधारित है। बाकी सीधा है –

उत्तर

20

कि सुविधा की जरूरत है के लिए:

  • पहले (कम से कम) खेलने सेवाओं के संस्करण 7,0

compile 'com.google.android.gms:play-services:7.0.0'

  • अपने कोड में इस तरह दूसरा कुछ (मैं अपने onCreate में यह था):

-

// Check the location settings of the user and create the callback to react to the different possibilities 
LocationSettingsRequest.Builder locationSettingsRequestBuilder = new LocationSettingsRequest.Builder() 
       .addLocationRequest(mLocationRequest); 
PendingResult<LocationSettingsResult> result = 
       LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, locationSettingsRequestBuilder.build()); 
result.setResultCallback(mResultCallbackFromSettings); 

और फिर कॉलबैक बनाएँ:

// The callback for the management of the user settings regarding location 
private ResultCallback<LocationSettingsResult> mResultCallbackFromSettings = new ResultCallback<LocationSettingsResult>() { 
    @Override 
    public void onResult(LocationSettingsResult result) { 
     final Status status = result.getStatus(); 
     //final LocationSettingsStates locationSettingsStates = result.getLocationSettingsStates(); 
     switch (status.getStatusCode()) { 
      case LocationSettingsStatusCodes.SUCCESS: 
       // All location settings are satisfied. The client can initialize location 
       // requests here. 
       break; 
      case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: 
       // Location settings are not satisfied. But could be fixed by showing the user 
       // a dialog. 
       try { 
        // Show the dialog by calling startResolutionForResult(), 
        // and check the result in onActivityResult(). 
        status.startResolutionForResult(
          MapActivity.this, 
          REQUEST_CHECK_SETTINGS); 
       } catch (IntentSender.SendIntentException e) { 
        // Ignore the error. 
       } 
       break; 
      case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: 
       Log.e(TAG, "Settings change unavailable. We have no way to fix the settings so we won't show the dialog."); 
       break; 
     } 
    } 
}; 

और फिर, अंत में, onActivityResult में मेरे पास निम्न था:

/** 
* Used to check the result of the check of the user location settings 
* 
* @param requestCode code of the request made 
* @param resultCode code of the result of that request 
* @param intent intent with further information 
*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    //final LocationSettingsStates states = LocationSettingsStates.fromIntent(intent); 
    switch (requestCode) { 
     case REQUEST_CHECK_SETTINGS: 
      switch (resultCode) { 
       case Activity.RESULT_OK: 
        // All required changes were successfully made 
        if (mGoogleApiClient.isConnected() && userMarker == null) { 
         startLocationUpdates(); 
        } 
        break; 
       case Activity.RESULT_CANCELED: 
        // The user was asked to change settings, but chose not to 
        break; 
       default: 
        break; 
      } 
      break; 
    } 
} 
+0

मैंने अभी तक जवाब की पुष्टि नहीं की है, फिर भी कोशिश करेगा। मदद के लिए धन्यवाद –

+12

Google play सेवाएं एक विशाल पुस्तकालय है। केवल स्थान एपीआई को शामिल करने के लिए, 'compile' com.google.android.gms का उपयोग करें: play-services-location: 8.1.0'' –

+0

भयानक। धन्यवाद। मेरे लिए बहुत समय बचाया। – hybrid

संबंधित मुद्दे