Use mock location without setting it in settings

前端 未结 3 642
隐瞒了意图╮
隐瞒了意图╮ 2020-12-03 09:15

I am writing an App which makes use of the location mocking possibility in android.

What I would like to achive is to mock my location without setting the \"allow mo

相关标签:
3条回答
  • 2020-12-03 09:29

    I have decompiled com.lexa.fakegps you mentioned in question, and what it do like this:

    private int setMockLocationSettings() {
        int value = 1;
        try {
            value = Settings.Secure.getInt(getContentResolver(),
                    Settings.Secure.ALLOW_MOCK_LOCATION);
            Settings.Secure.putInt(getContentResolver(),
                    Settings.Secure.ALLOW_MOCK_LOCATION, 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return value;
    }
    
    private void restoreMockLocationSettings(int restore_value) {
        try {
            Settings.Secure.putInt(getContentResolver(),
                    Settings.Secure.ALLOW_MOCK_LOCATION, restore_value);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /* every time you mock location, you should use these code */
    int value = setMockLocationSettings();//toggle ALLOW_MOCK_LOCATION on
    try {
        mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, fake_location);
    } catch (SecurityException e) {
        e.printStackTrace();
    } finally {
        restoreMockLocationSettings(value);//toggle ALLOW_MOCK_LOCATION off
    }
    

    Because the execution time of these code is very short, other apps can hardly detect the change of ALLOW_MOCK_LOCATION.

    Also you need,
    1. require root access to your device
    2. move your app to /system/app or /system/priv-app

    I tried it in my project and it works fine.

    0 讨论(0)
  • 2020-12-03 09:33

    Try this http://repo.xposed.info/module/com.brandonnalls.mockmocklocations

    Some apps won't let you use them if "Allow mock locations" is turned on, even if you aren't mocking your location. This helps prevent apps from detecting that "Allow mock locations" is turned on.

    0 讨论(0)
  • 2020-12-03 09:45

    You would require root access to your device to do that.

    0 讨论(0)
提交回复
热议问题