Разрешение ACCESS_MOCK_LOCATION игнорируется?

Я не проводил тщательного тестирования, но есть доказательства того, что этот файл android.permission.ACCESS_MOCK_LOCATION в манифесте приложения не работает, как можно было бы предположить (т.е. если существует – позволяет провайдерам локальных местоположений, в противном случае – нет). Таким образом, поддельные приложения GPS, такие как https://play.google.com/store/apps/details?id=com.lexa.fakegps, работают с любым приложением, независимо от того, установлен ли он ACCESS_MOCK_LOCATION или нет. Кажется, этого достаточно, если пользователь разрешает поддельные местоположения в настройках устройства.

Может быть, ACCESS_MOCK_LOCATION действительно означает, что приложение может быть самонадеянным провайдером местоположения? Если это так, то это должно быть больше похоже на WRITE_MOCK_LOCATION, а не на доступ (чтение), как предложило бы название. Звучит скорее как ошибка, чем функция. Если это так, то нет никакого способа действительно гарантировать, что местоположение GPS является реальным, а не поддельным?

Поскольку никто не ответил на ваш вопрос, я отвечу:

Может быть, ACCESS_MOCK_LOCATION действительно означает, что приложение может быть самонадеянным провайдером местоположения?

Да. Разрешение позволяет приложению «получить доступ» к функции разработчика «mock location». Это позволяет разработчику создавать ложные местоположения, которые кажутся реальными, чтобы разрабатывать / тестировать приложения с функциями, основанными на местоположении, без фактического физического перемещения или изменения (например, жесткой проводки поддельного GPS) устройства.

Поскольку Google не знает, какое приложение вы хотите протестировать или как вы хотите предоставить поддельные данные, он сделал это. Как функция разработчика, это уменьшает экспозицию этой функции для населения в целом.

В 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 только если у него есть привилегии root. Кроме того, ему нужно включить Allow mock locations чтобы имитировать местоположение, даже если у него есть привилегии root. Итак, я думаю, что разрешение для обычных приложений не для системных приложений. Системные приложения имеют больше привилегий делать что-либо без объявления разрешений в AndroidManifest.xml .

Сначала вам нужно задействовать режим разработчика, который в Android 4.2.1 выполняется, выбрав « Settings -> « About Tablet (рядом с ним, скорее всего, названный чем-то похожим для телефонов) и нажмите « Build number внизу» семь раз. Обратный отсчет появится после того, как вы начнете прослушивать, чтобы показать вам, сколько еще нужно, чтобы стать разработчиком.

Нажмите кнопку «Назад», чтобы вернуться в « Settings , и теперь вы найдете пункт « Settings Developer options над меню «О программе», которое вы DEBUGGING , и нажмите « Allow mock locations разделе « DEBUGGING . Теперь ваше устройство должно уважать ACCESS_MOCK_LOCATION .

(Если ваша мотивация для этого заключается в том, чтобы обмануть Ingress, полагая, что вы находитесь вокруг портала, вам не повезло, хотя – любое приложение, конечно, может обнаружить, что эта настройка включена, и сказать вам отключить ее, поэтому вы Может в лучшем случае использовать его для пополнения вашего XM-питания. 🙂

Отключите контрольную проверку 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> 
Intereting Posts