7

Android ओएस में सक्षम, "सेटिंग" में -> "स्थान सेवाएं", वहाँ एक टॉगल बटन जो इस्तेमाल किया जा सकता "मेरे स्थान तक पहुंच" नाम है & अक्षम करने के लिए ऐप्स से स्थान जानकारी पहुंच सक्षम करें।स्थान पहुंच अक्षम सुनें/सेटिंग्स

वर्तमान में, मैं एक स्थान सेवा अनुप्रयोग विकसित कर रहा हूं। मैं सोच रहा हूं, मैं अपने एंड्रॉइड प्रोजेक्ट में इस सेटिंग को कैसे सुन सकता हूं? क्या कोई प्रसारण रिसीवर है जिसका उपयोग मैं तुरंत जानने के लिए कर सकता हूं जब उपयोगकर्ता अक्षम या सक्षम हो जाता है "मेरे स्थान पर पहुंच"?

यदि इसके लिए कोई प्रसारण रिसीवर नहीं है, तो मैं अपने एंड्रॉइड प्रोजेक्ट में इस बदलाव को कैसे सुन सकता हूं?

+1

@ GrlsHu, नहीं, मैं नहीं चाहता कि ऐसा करना चाहते हैं। मेरे प्रश्न का मुख्य बिंदु यह है कि इस स्थान पहुंच सेटिंग को कैसे सुनें। – Mellon

+0

http://stackoverflow.com/a/20673766/1994950 और http://stackoverflow.com/a/23756293/1994950 – Kushal

उत्तर

0

आपको यह देखना होगा नीचे दिए गए कोड का उपयोग कर सकते स्थान सेवा को सक्षम है या नहीं

LocationManager lm = null; 
boolean gps_enabled,network_enabled; 
    if(lm==null) 
     lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
    try{ 
    gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); 
    }catch(Exception ex){} 
    try{ 
    network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
    }catch(Exception ex){} 

    if(!gps_enabled && !network_enabled){ 
     dialog = new AlertDialog.Builder(context); 
     dialog.setMessage(context.getResources().getString(R.string.gps_network_not_enabled)); 
     dialog.setPositiveButton(context.getResources().getString(R.string.open_location_settings), new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
       // TODO Auto-generated method stub 
       Intent myIntent = new Intent(Settings.ACTION_SECURITY_SETTINGS); 
       context.startActivity(myIntent); 
       //get gps 
      } 
     }); 
     dialog.setNegativeButton(context.getString(R.string.Cancel), new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
       // TODO Auto-generated method stub 

      } 
     }); 
     dialog.show(); 

    } 
+2

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

+0

@GrIsHu यह गलत है। क्या आपने नीचे usman के समाधान की कोशिश की है? –

5

यह मेरे लिए काम करता है कि क्या:

मालसूची फ़ाइल को रिसीवर जोड़ें:

<receiver 
     android:name="com.eegeo.location.LocationProviderChangedReceiver"> 
     <intent-filter> 
      <action android:name="android.location.PROVIDERS_CHANGED" /> 
     </intent-filter> 
    </receiver> 

चेक दोनों रिसीवर में स्थान प्रदाता:

public class LocationProviderChangedReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     boolean anyLocationProv = false; 
     LocationManager locationManager = (LocationManager) MyMainActivity.context.getSystemService(Context.LOCATION_SERVICE); 

     anyLocationProv |= locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     anyLocationProv |= locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

     Log.i("", "Location service status" + anyLocationProv); 


    } 

} 

हालांकि स्पष्ट कारणों से इस रिसीवर को एक से अधिक बार बुलाया जाता है, लेकिन यह आपको स्थिति बताएगा।

+1

मेनिफेस्ट प्रसारण रिसीवर केवल तभी उपयोग किया जाना चाहिए जब ऐप को पृष्ठभूमि में स्थान की आवश्यकता हो। इसे अन्यथा रनटाइम प्रसारण रिसीवर का उपयोग करना चाहिए –

1

आप इसे इस तरह से बहुत आसान कर सकते हैं। अपने BroadcastReceiver के onReceive में() विधि:

ContentResolver contentResolver = getContext().getContentResolver(); 
    // Find out what the settings say about which providers are enabled 
    int mode = Settings.Secure.getInt(
      contentResolver, Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF); 

    if (mode == Settings.Secure.LOCATION_MODE_OFF) { 
     // Location is turned OFF! 
    } else { 
     // Location is turned ON! 
    } 

~ इस कोड के लिए धन्यवाद: LocationManagerTest.java

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