2011-03-30 14 views
7

संभव डुप्लिकेट एंड्रॉयड में जीपीएस सक्षम करने के लिए कैसे:
Enable GPS programatically like Taskerकोडिंग

ठीक है, मुझे पता है कि एक ही सवाल से पहले पूछा है, लेकिन सब जवाब है "नहीं"। यह साबित हुआ है कि कोडिंग में जीपीएस सक्षम किया जा सकता है। विश्वास मत करो? "लुकआउट" नामक एप्लिकेशन को आज़माएं। मेरा मानना ​​है कि इसे हासिल करने के लिए कुछ कामकाज है।

मैं AndroidManifest.xml तलाश के माध्यम से पढ़ा था, मैं क्या पता चला है कि वे केवल

<uses-permission android:name="android.permission.WRITE_SETTINGS"/> 

किसी को भी पता नहीं है कि वे किस तरह ऐसा करने में कामयाब रहे प्रयोग करते हैं? पीछे रहस्य क्या है? मैं व्यक्तिगत रूप से केवल तभी आवेदन प्रणाली एप्लिकेशन के रूप में स्थापित करने के लिए और भी दो अनुमति की आवश्यकता होती है ऐसा करने में कामयाब रहे

<uses-permission android:name="android.permission.WRITE_SETTINGS"/> 
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/> 

मेरे कोड:

Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true); 

धन्यवाद।

उत्तर

10

लुकआउट समर्थन मंचों पर this post के अनुसार, वे प्रोग्रामिंग रूप से जीपीएस सक्षम करने में असमर्थ हैं।

लुकआउट जीपीएस रिसीवर दूर से सक्षम हो सकता है, तो सेवा का उपयोग करें, तो इसे बंद - हम करेंगे, लेकिन दुर्भाग्य से कोई "लुकआउट के अलावा अन्य सब कुछ के लिए अक्षम जीपीएस" है और आप जीपीएस रिसीवर को निष्क्रिय कर दिया है, तो , कोई भी आवेदन इसका उपयोग नहीं कर सकता है। जीपीएस रिसीवर को सक्षम करने के लिए उपयोगकर्ता को मैन्युअल रूप से ऐसा करने की आवश्यकता होती है।

संपादित करें: यह लुकआउट के नए संस्करण में की तरह वे सबसे अधिक संभावना अब यह पूरा करने के लिए एक सुरक्षा दोष का शोषण कर रहे हैं लग रहा है। यह काम करने के लिए जारी रखने के लिए इसकी गारंटी नहीं है, लेकिन according to an open Android bug report from April 2010, निम्न के समान कोड सफलतापूर्वक प्रोग्राम के रूप में सक्षम हो जाएगा/अक्षम जीपीएस (कम से कम जब तक दोष ठीक हो गई है):

private void toggleGPS(boolean enable) { 
    String provider = Settings.Secure.getString(getContentResolver(), 
     Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

    if(provider.contains("gps") == enable) { 
     return; // the GPS is already in the requested state 
    } 

    final Intent poke = new Intent(); 
    poke.setClassName("com.android.settings", 
     "com.android.settings.widget.SettingsAppWidgetProvider"); 
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
    poke.setData(Uri.parse("3")); 
    context.sendBroadcast(poke); 
} 

इसके अलावा, प्रश्न देखें "Enable GPS programmatically like Tasker" और XDA thread mentioned there लोगों ने इस विधि का उपयोग कैसे किया है, इस बारे में अधिक चर्चा के लिए।

यदि आप इस विधि का उपयोग करते हैं, तो आपको इसे अपने आवेदन के संभावित उपयोगकर्ताओं को स्पष्ट करना चाहिए, क्योंकि यह विशाल संभावित गोपनीयता चिंता है।

+0

हां, यह पुरानी रिलीज है। लेकिन यह नई रिलीज में संभव है। उनकी सहायता देखें https://www.mylookout.com/help/ _Can क्या आप दूरस्थ रूप से जीपीएस चालू करते हैं? _ ** हां! ** लुकआउट एंड्रॉइड फोन के जीपीएस रिसीवर का यथासंभव कुशलतापूर्वक उपयोग करता है। जब किसी एंड्रॉइड डिवाइस के लिए एक पता लगाने का अनुरोध किया जाता है, तो पता लगाने के दौरान लुकआउट दूरस्थ रूप से जीपीएस चालू कर सकता है और फिर उसे फिर से बंद कर सकता है (स्थान सर्वश्रेष्ठ स्थान परिणाम प्राप्त करने के लिए कुछ मिनट के लिए चला सकते हैं)। यह आपके फोन के बैटरी जीवन को बचाने में मदद करता है। जब आप स्पष्ट रूप से अनुरोध करते हैं तो लुकआउट केवल आपके स्थान प्राप्त करने के लिए जीपीएस का उपयोग करता है। – Jason

+0

मैंने व्यक्तिगत रूप से इसका परीक्षण भी किया था। यह काम करता हैं। – Jason

+0

मैंने अभी रूट की गई डिवाइस पर इसे आजमाया है, और मैं पुष्टि कर सकता हूं कि यह जीपीएस को सक्षम करने में सक्षम है (और यह समाप्त होने के बाद भी इसे सक्षम करता है)। मुझे आश्चर्य है कि क्या वे अभी भी एक गैर-रूट डिवाइस पर ऐसा करने में सक्षम होंगे।क्या आपने इसे स्टॉक, गैर रूट वाले फोन पर आजमाया है? – Brian

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