Вот как вы должны использовать пользовательский провайдер макетов:
//Instantiate in your activity
LocationManager lm = getSystemService(LOCATION_SERVICE);
//Add a test provider
lm.addTestProvider("myprovider", false, false, false, false, true, true, true, Criteria.POWER_HIGH, Criteria.ACCURACY_FINE);
//Update the last location your provider will serve
Location fakeLoc = ...;
lm.setTestProviderLocation("myprovider", fakeLoc);
//Using your custom location provider
LocationProvider customProvider = lm.getProvider("myprovider");
Вы можете просмотреть документы по наиболее важным методам здесь .
Поскольку каждое приложение выбираеткакой провайдер использовать, вы не можете заставить их использовать свой.Кроме того, клиентские приложения должны иметь разрешение ACCESS_MOCK_LOCATION
, что не может быть принудительно.
Но вы можете попытаться зарегистрировать фиктивного провайдера с именем провайдера gps по умолчанию:
lm.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, true, true, true, Criteria.POWER_HIGH, Criteria.ACCURACY_FINE);
ОС должна помешать вам добиться успеха в этом (в противном случае это будет серьезным недостатком безопасности).