2012-04-12 13 views
5

मैं जांच सकता हूं कि जीपीएस चालू है या नहीं हैप्रोवाइडरएनेबल()। यदि यह चालू नहीं है, तो मैं इरादा लॉन्च कर रहा हूं ताकि उपयोगकर्ता जीपीएस सक्षम कर सके। अंत में मैं फिर से जांच कर रहा हूं कि जीपीएस उपयोगकर्ता द्वारा सक्षम है या नहीं। यदि उपयोगकर्ता जीपीएस सक्षम नहीं करता है और बाहर आ जाता है, तो अभी भी प्रदाता है सक्षम() पूर्ण वापस लौट रहा है। समस्या क्या हो सकती है? कृपया मेरा मार्ग दर्शन कीजिए।जीपीएस सक्षम नहीं है लेकिन isProviderEnabled() सच हो रहा है

String provider = LocationManager.GPS_PROVIDER; 
    // Check if GPS is enabled 
    boolean enabled = myLocationManager.isProviderEnabled(provider); 

    if (!enabled) { 
        // GPS not enabled 
     Log.d("", "Provider " + provider + " is not enabled"); 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 
        // Consider the case when user does not enable GPS and come out. 
    } else { 
     Log.d("", "Provider is enabled"); 

    }  

      // Re-check if user has enabled or not. (Note: case: user has not enabled GPS) 
    enabled = myLocationManager.isProviderEnabled(provider); 
    if(!enabled) 
    { 

     Log.d("","provider not enabled"); 
    } 
      else 
      { 
        // Control is coming here though user has not enabled GPS in settings 
        Log.d("","GPS is enabled"); 
      } 

धन्यवाद, विप्लव

उत्तर

8

चेक जीपीएस इस कोड का उपयोग करने के लिए सक्षम है और मुझे पता है कि होने दें,

private void CheckEnableGPS(){ 
    String provider = Settings.Secure.getString(getContentResolver(), 
     Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
     if(!provider.equals("")){ 
      //GPS Enabled 
     Toast.makeText(AndroidEnableGPS.this, "GPS Enabled: " + provider, 
      Toast.LENGTH_LONG).show(); 
     }else{ 
     Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); 
      startActivity(intent); 
     } 
    } 
+0

धन्यवाद, यह सही रूप में मैं चाहता था है। –

+1

मेरे लिए काम नहीं किया, मैंने जीपीएस सक्षम और अक्षम के साथ कोशिश की, और दोनों बार एक ही टोस्ट मिला। –

+0

@ बिलगरी शायद ऐसा इसलिए है क्योंकि आपका नेटवर्क या निष्क्रिय प्रदाता अभी भी सक्रिय है। उस प्रदाता स्ट्रिंग में सभी सक्षम प्रदाताओं को शामिल होना चाहिए, न केवल जीपीएस। नल के लिए उनकी जांच केवल हमें बताती है कि एक प्रदाता सक्षम है, और वास्तव में नहीं है। – Guardanis

5

मैं एक वास्तविक भौतिक डिवाइस पर इस मुद्दे पड़ा है।

मैंने अपने भौतिक एंड्रॉइड डिवाइस पर नकली स्थानों का उपयोग करके कुछ परीक्षण किए, और फिर जीपीएस का उपयोग करके वास्तविक स्थानों पर वापस स्विच किया (कोड सभी नकली स्थानों से साफ़ था)। इस बिंदु पर, जीपीएस बंद कर दिया गया था या नहीं, एप्लिकेशन हमेशा "सत्य" (जीपीएस सक्रिय) वापस लौटाएगा और किसी कारण से वास्तविक स्थानों को और पंजीकृत नहीं करेगा।

इस मामले में, भौतिक डिवाइस को रिबूट करने से समस्या हल हो गई।

+0

मैं अपने ऐप के बारे में चिंतित था। इससे बहुत मदद मिली। धन्यवाद! इसके अलावा, क्या प्रोग्रामिंग रूप से नकली स्थानों को रीसेट करने का कोई तरीका है? मैं अपने दर्शकों के थोड़ा कुख्यात हिस्सों के लिए भी अपने ऐप की अखंडता सुनिश्चित करना चाहता हूं। – SlashG

+0

मुझे बिल्कुल यकीन नहीं है कि आप क्या पूछ रहे हैं, लेकिन मेरे लिए (जब मैंने कोशिश की थी) यह एकमात्र तरीका था जिससे मैं स्थानों को रीसेट कर सकता था। – Pelpotronic

+0

बस स्थान चालू और बंद करना नौकरी करता है, यह वही है जो मैं अपने ऐप के साथ कर रहा हूं, बस उपयोगकर्ता को अपने जीपीएस को पुनरारंभ करने के लिए और फिर 'ब्रॉडकास्ट रिसीवर' का उपयोग करके यह सुनिश्चित करने के लिए कि उपयोगकर्ता वास्तव में इसे पुनरारंभ करता है। – Dennis

0

एक ही मुद्दा जहां isProviderEnabled() उपकरणों < पर सच वापसी होगी लॉलीपॉप था

user370305 का जवाब इस प्रकार मैं अपने विधि अपडेट के आधार पर:

private boolean isLocationEnabled() { 

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 

     String provider = Settings.Secure.getString(getContentResolver(), 
       Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

     return !provider.equals(""); 

    } else { 

     LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

     return gps || network; 

    } 

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