2015-03-06 10 views
5

मुझे देश (आईएसओ 3) निर्धारित करने की आवश्यकता है, डिवाइस में भी है यदि उपयोगकर्ता के डिवाइस में जीपीएस बंद हो गया है और ऐप्स को इसके स्थान तक पहुंचने की अनुमति नहीं देता है।उपयोगकर्ता स्थान सेटिंग के बावजूद एंड्रॉइड डिवाइस के वर्तमान देश स्थान को कैसे निर्धारित करें?

मुझे उन टैबलेट के लिए भी खाते की आवश्यकता है जिनके पास सिम कार्ड नहीं है और इस प्रकार टेलीफ़ोनी प्रबंधक का उपयोग नहीं कर सकते हैं।

इस कारण मैं नहीं मानता कि मैं (क्योंकि इन कारणों से भी: LocationManager requestLocationUpdates doesn't work) स्थान प्रबंधक का उपयोग कर सकते

दृष्टिकोण मैं सोच रहा हूँ मैं की आवश्यकता होगी एक तीसरी पार्टी के लिए एक सरल HTTP अनुरोध बनाने के लिए है आईपी ​​स्थान एपीआई: उदाहरण के लिए http://www.ipinfodb.com/ip_location_api.php या https://freegeoip.net

इस यह करने के लिए सबसे अच्छा तरीका है? उपयोग करने के लिए सबसे अच्छा ओपन एपीआई क्या है?

+0

मदद मिलेगी मन में VPN और कॉर्पोरेट नेटवर्क रखें। एक निश्चित कॉर्पोरेट नेटवर्क के परिणामस्वरूप मुझे भारत में होने पर ताइवान में भूगर्भित किया गया। यदि आपके पास भारत में आपके ऐप का उपयोग करने के लिए लाइसेंस प्राप्त है तो आपके उपयोगकर्ताओं को परेशान किया जाएगा, लेकिन आपका ऐप एक संवाद को पॉप करता है, "क्षमा करें, ताइवान समर्थित नहीं है।" –

उत्तर

5

तीसरे पक्ष के आईपी स्थान एपीआई का आपका दृष्टिकोण वर्तमान में सही लगता है। हो सकता है यह आपको

http://ip-api.com/docs/api:json

http://ip-api.com/json

+0

वह सेवा बहुत अच्छी लगती है, लेकिन यह कौन सी सेवा है? सेवा के नियमों के बारे में कोई जानकारी नहीं है। – JohnRock

+0

मेरी अनुसंधान और विकास तथा excprience के अनुसार उनके गैर है – Sadiq

+0

मैं इस रूप में सही चिह्नित क्योंकि हालांकि मैं सेवा जैसा कि ऊपर उल्लेख उपयोग नहीं कर रहा है, मैं एक कस्टम एपीआई endpoint है कि हम इस सवाल का जवाब के बजाय डिवाइस पर भरोसा करने के लिए बनाया गया पर फैसला किया जाएगा। – JohnRock

3

आप TelephonyManager

TelephonyManager tm = (TelephonyManager)this.getSystemService(this.TELEPHONY_SERVICE); 
String countryCode = tm.getNetworkCountryIso(); 

अपडेट का उपयोग कर सकते हैं:, जब से तुम टेलीफोनी मैं इस आजमाने का सुझाव देते हैं उपयोग नहीं कर सकते के रूप में इसे पाने के उपयोगकर्ताओं इनपुट से है, जब वे सेटअप डिवाइस।

String locale = context.getResources().getConfiguration().locale.getCountry(); 
+0

सिम कार्ड के बिना टैबलेट में टेलीफ़ोनी प्रबंधक नहीं होगा, इसलिए मैं उस पर भरोसा नहीं कर सकता। मैंने इसे शामिल करने के लिए अपना प्रश्न अपडेट कर लिया है। धन्यवाद – JohnRock

+0

यह एक दिलचस्प विचार है। मैंने कोशिश नहीं की है, लेकिन क्या वह खराब है? मैं उस चीज़ पर भरोसा नहीं कर सका जो उपयोगकर्ता विज्ञापन सेट कर सकता था। – JohnRock

+0

मुझे यकीन नहीं है, क्या मैं पूछ सकता हूं कि आप इसका क्या उपयोग करेंगे? –

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