2013-01-18 15 views
7

मैं व्यापक परीक्षण नहीं किया है, लेकिन सबूत नहीं है कि आवेदन प्रकट में है कि android.permission.ACCESS_MOCK_LOCATION के रूप में एक ग्रहण करेंगे काम नहीं करता है (अर्थात, अगर मौजूद है - अनुमति देता है कृत्रिम स्थान प्रदाताओं, अन्यथा नहीं)। ऐसे में नकली जीपीएस अनुप्रयोग जैसे https://play.google.com/store/apps/details?id=com.lexa.fakegps किसी भी एप्लिकेशन के साथ काम करते हैं, भले ही उसके पास ACCESS_MOCK_LOCATION सेट है या नहीं। ऐसा लगता है कि उपयोगकर्ता डिवाइस सेटिंग्स में नकली स्थानों की अनुमति देता है।अनुमति ACCESS_MOCK_LOCATION को अनदेखा किया गया है?

शायद ACCESS_MOCK_LOCATION वास्तव में मतलब यह है कि आवेदन ही कृत्रिम स्थान प्रदाता हो सकता है? यदि ऐसा है, तो इसे WRITE_MOCK_LOCATION की तरह अधिक पढ़ा जाना चाहिए, नाम (पढ़ना) नहीं है क्योंकि नाम सुझाएगा। एक सुविधा की तुलना में बग की तरह लगता है। यदि यह सच है, तो वास्तव में यह सुनिश्चित करने का कोई तरीका नहीं है कि जीपीएस स्थान वास्तविक है, नकली नहीं है?

+0

कृपया मेरा उत्तर जांचें। – PageNotFound

+0

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

उत्तर

1

के बाद से कोई भी वास्तव में अपने प्रश्न का उत्तर, मैं एक जवाब प्रदान करेगा:

शायद ACCESS_MOCK_LOCATION वास्तव में मतलब यह है कि आवेदन कर सकते हैं स्वयं नकली स्थान प्रदाता हो?

हां। अनुमति ऐप को "नकली स्थान" डेवलपर सुविधा "एक्सेस" करने की अनुमति देती है। यह एक डेवलपर को नकली स्थानों को बनाने की अनुमति देता है जो डिवाइस को विकसित/परीक्षण करने के लिए वास्तविक होते हैं, जिनके पास वास्तव में भौतिक रूप से स्थानांतरित या परिवर्तित होने के बिना स्थान-आधारित सुविधाएं होती हैं (जैसे हार्ड फर्जी वायर एक नकली जीपीएस) डिवाइस।

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

+0

धन्यवाद, स्पष्ट उत्तर। तो यह सिर्फ भ्रमित अनुमति नाम है। क्या आप मेरे प्रश्न के दूसरे भाग को जानते हैं - मेरा ऐप कैसे सुनिश्चित कर सकता है कि यह हमेशा वास्तविक और कुछ नकली स्थान का उपयोग न करे? – JaakL

2

आप पहली बार डेवलपर मोड है, जो एंड्रॉयड 4.2.1 में Settings के लिए जा रहा द्वारा किया जाता है संलग्न करने के लिए की जरूरत है ->About Tablet (तल के पास, कुछ फोन के लिए इसी तरह की संभावना कहा जाता है) और नीचे, सात बार पर Build number टैप करें। एक बार टैप करना शुरू करने के बाद एक गिनती दिखाई देगी, यह दिखाने के लिए कि डेवलपर बनने के लिए आपको और कितना आवश्यक है।

वापस बटन हिट Settings पर लौटने के लिए, और अब आप मेनू के बारे में आप में थे ऊपर एक Developer options आइटम मिल जाएगा - यह क्लिक करें, और DEBUGGING तहत Allow mock locations की जाँच करें। आपके डिवाइस को अब ACCESS_MOCK_LOCATION का उचित सम्मान करना चाहिए।

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

+1

-1 क्योंकि इसका उत्तर नहीं है, पेज नॉटफाउंड का वैध उत्तर है। –

3

http://developer.android.com/reference/android/Manifest.permission.html में, यह Allows an application to create mock location providers for testing कहता है, इसलिए मुझे लगता है कि आपको क्या लगता है सही है।

और वास्तव में, com.lexa.fakegps केवल ACCESS_MOCK_LOCATION के बिना स्थान का नकल कर सकता है यदि उसके पास रूट विशेषाधिकार है। इसके अलावा, इसे मॉक स्थान पर Allow mock locations टॉगल करने की आवश्यकता है, यहां तक ​​कि इसका मूल विशेषाधिकार भी है। इसलिए, मुझे लगता है कि सामान्य ऐप्स के लिए अनुमति सिस्टम ऐप्स के लिए नहीं है। AndroidManifest.xml में अनुमतियों की घोषणा किए बिना सिस्टम ऐप्स को और अधिक विशेषाधिकार हैं।

1

कि विशेष रूप से अनुमति के लिए MockLocation फाहा जाँच अक्षम करें, यानी

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"> 
    <uses-permission 
     android:name="android.permission.ACCESS_MOCK_LOCATION" 
     tools:ignore="MockLocation" /> 
</manifest> 
संबंधित मुद्दे