[android] Check location permission for MyTracker

This commit is contained in:
Dmitry Donskoy 2018-10-01 17:25:24 +03:00 committed by Aleksandr Zatsepin
parent 3a808c199f
commit 74f9877432
4 changed files with 39 additions and 25 deletions

View file

@ -89,7 +89,7 @@ public class SplashActivity extends AppCompatActivity
if (!mediator.isLimitAdTrackingEnabled())
{
LOGGER.i(TAG, "Limit ad tracking disabled, sensitive tracking initialized");
mediator.initSensitiveEventLogger();
mediator.initSensitiveData();
}
else
{
@ -98,13 +98,10 @@ public class SplashActivity extends AppCompatActivity
init();
LOGGER.i(TAG, "Core initialized: " + app.arePlatformAndCoreInitialized());
if (app.arePlatformAndCoreInitialized())
if (app.arePlatformAndCoreInitialized() && mediator.isLimitAdTrackingEnabled())
{
if (mediator.isLimitAdTrackingEnabled())
{
LOGGER.i(TAG, "Limit ad tracking enabled, rb banners disabled.");
mediator.disableAdProvider(Banner.Type.TYPE_RB);
}
LOGGER.i(TAG, "Limit ad tracking enabled, rb banners disabled.");
mediator.disableAdProvider(Banner.Type.TYPE_RB);
}
// Run delayed task because resumeDialogs() must see the actual value of mCanceled flag,

View file

@ -21,6 +21,7 @@ import com.mapswithme.maps.PrivateVariables;
import com.mapswithme.maps.R;
import com.mapswithme.maps.ads.Banner;
import com.mapswithme.util.CrashlyticsUtils;
import com.mapswithme.util.PermissionsUtils;
import com.mapswithme.util.Utils;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.log.LoggerFactory;
@ -64,7 +65,7 @@ public class ExternalLibrariesMediator
getAdInfoTask.execute();
}
public void initSensitiveEventLogger()
private void initSensitiveEventLogger()
{
if (com.mapswithme.util.concurrency.UiThread.isUiThread())
{
@ -184,6 +185,15 @@ public class ExternalLibrariesMediator
return mApplication;
}
public void initSensitiveData()
{
initSensitiveEventLogger();
if (PermissionsUtils.isLocationGranted(getApplication()))
return;
MyTargetPrivacy.setUserConsent(false);
}
private static class GetAdInfoTask extends AsyncTask<Void, Void, AdvertisingInfo>
{
@NonNull

View file

@ -7,7 +7,7 @@ import android.support.annotation.Nullable;
import com.mapswithme.maps.BuildConfig;
import com.mapswithme.maps.PrivateVariables;
import com.mapswithme.util.LocationUtils;
import com.mapswithme.util.PermissionsUtils;
import com.my.tracker.MyTracker;
import com.my.tracker.MyTrackerParams;
@ -56,15 +56,12 @@ class MyTrackerEventLogger extends ContextDependentEventLogger
MyTracker.createTracker(PrivateVariables.myTrackerKey(), getApplication());
final MyTrackerParams myParams = MyTracker.getTrackerParams();
if (myParams != null)
initParams(myParams);
{
myParams.setDefaultVendorAppPackage();
boolean isLocationGranted = PermissionsUtils.isLocationGranted(getApplication());
myParams.setTrackingLocationEnabled(isLocationGranted);
myParams.setTrackingEnvironmentEnabled(isLocationGranted);
}
MyTracker.initTracker();
}
private void initParams(@NonNull MyTrackerParams myParams)
{
myParams.setDefaultVendorAppPackage();
boolean isProviderAvailable = LocationUtils.checkProvidersAvailability(getApplication());
myParams.setTrackingLocationEnabled(isProviderAvailable);
myParams.setTrackingEnvironmentEnabled(isProviderAvailable);
}
}

View file

@ -48,9 +48,20 @@ public final class PermissionsUtils
return getPermissionsResult(result);
}
public static boolean isLocationGranted(@NonNull Context context)
{
return checkPermissions(context).isExternalStorageGranted();
}
/**
*
* Use {@link #isLocationGranted(Context)} instead.
*/
@SuppressWarnings("DeprecatedIsStillUsed")
@Deprecated
public static boolean isLocationGranted()
{
return checkPermissions().isLocationGranted();
return checkPermissions(MwmApplication.get()).isLocationGranted();
}
public static boolean isLocationExplanationNeeded(@NonNull Activity activity)
@ -61,19 +72,18 @@ public final class PermissionsUtils
public static boolean isExternalStorageGranted()
{
return checkPermissions().isExternalStorageGranted();
return checkPermissions(MwmApplication.get()).isExternalStorageGranted();
}
@NonNull
private static PermissionsResult checkPermissions()
private static PermissionsResult checkPermissions(@NonNull Context context)
{
Context context = MwmApplication.get().getApplicationContext();
Context appContext = context.getApplicationContext();
Map<String, Boolean> result = new HashMap<>();
for (String permission: PERMISSIONS)
{
result.put(permission,
Build.VERSION.SDK_INT < Build.VERSION_CODES.M
|| context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
result.put(permission, Build.VERSION.SDK_INT < Build.VERSION_CODES.M
|| appContext.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
}
return getPermissionsResult(result);