Hi, I have got a problem with my mock location service. It should mock the location for an other app, but it only works for google maps. I know that the "other app" is not the problem, because "Fake GPS" is able to mock it.
AndroidManifest.xml: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="user.tpmockvuln"> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MockService" android:enabled="true" android:exported="true" android:icon="@drawable/ic_check_circle_black_24px"></service> </application> </manifest> MockService: public class MockService extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private GoogleApiClient mGoogleApiClient; private Location mockLocation; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { // Create an instance of GoogleAPIClient. if (mGoogleApiClient == null) { mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } } @Override public void onDestroy() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { } else { LocationServices.FusedLocationApi.setMockMode(mGoogleApiClient, false); } mGoogleApiClient.disconnect(); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { mGoogleApiClient.connect(); return super.onStartCommand(intent,flags,startId); } private void mockLocation(double latitude, double longitude, float speed) { if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { } else { mockLocation = new Location(LocationManager.NETWORK_PROVIDER); mockLocation.setLatitude(latitude); mockLocation.setLongitude(longitude); mockLocation.setSpeed(speed); mockLocation.setAltitude(0); mockLocation.setAccuracy(500); mockLocation.setTime(System.currentTimeMillis()); mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); mockLocation.setBearing(10); mockLocation.setProvider(LocationManager.NETWORK_PROVIDER); LocationServices.FusedLocationApi.setMockMode(mGoogleApiClient, true); LocationServices.FusedLocationApi.setMockLocation(mGoogleApiClient, mockLocation); } } @Override public void onConnected(@Nullable Bundle bundle) { mockLocation(48.133357, 11.573496, 0); } @Override public void onConnectionSuspended(int i) { } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { } } call from activity: public void run(View view) { statusTextView.setText("running"); intent = new Intent(this, MockService.class); startService(intent); } Thank you for your help -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/android-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/android-developers/651d07f2-b771-42db-a2d2-0eb4165f0be5%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

