Location permission is now required

This commit is contained in:
Electric1447
2021-09-12 16:30:21 +03:00
parent ec67136d44
commit 97f7359057
19 changed files with 11 additions and 67 deletions
@@ -2,7 +2,6 @@ package com.dosse.airpods.notification;
import android.app.Notification;
import android.content.Context;
import android.os.Build;
import android.view.View;
import android.widget.RemoteViews;
import androidx.core.app.NotificationCompat;
@@ -12,41 +11,29 @@ import com.dosse.airpods.pods.PodsStatus;
import com.dosse.airpods.pods.data.IPods;
import com.dosse.airpods.pods.data.RegularPods;
import com.dosse.airpods.pods.data.SinglePods;
import com.dosse.airpods.utils.PermissionUtils;
public class NotificationBuilder {
public static final String TAG = "AirPods";
public static final long TIMEOUT_CONNECTED = 30000;
public static final int NOTIFICATION_ID = 1;
private final RemoteViews[] notificationArr, notificationLocation;
private final Context mContext;
private final RemoteViews[] notificationArr;
private final NotificationCompat.Builder mBuilder;
public NotificationBuilder (Context context) {
mContext = context;
notificationArr = new RemoteViews[] {new RemoteViews(context.getPackageName(), R.layout.status_big), new RemoteViews(context.getPackageName(), R.layout.status_small)};
notificationLocation = new RemoteViews[] {new RemoteViews(context.getPackageName(), R.layout.location_disabled_big), new RemoteViews(context.getPackageName(), R.layout.location_disabled_small)};
mBuilder = new NotificationCompat.Builder(context, TAG);
mBuilder.setShowWhen(false);
mBuilder.setOngoing(true);
mBuilder.setSmallIcon(R.mipmap.notification_icon);
mBuilder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
mBuilder.setCustomContentView(notificationArr[1]);
mBuilder.setCustomBigContentView(notificationArr[0]);
}
public Notification build (PodsStatus status) {
// Apparently this restriction was removed ONLY in android Q
if (PermissionUtils.getLocationPermissions(mContext) || Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
mBuilder.setCustomContentView(notificationArr[1]);
mBuilder.setCustomBigContentView(notificationArr[0]);
} else {
mBuilder.setCustomContentView(notificationLocation[1]);
mBuilder.setCustomBigContentView(notificationLocation[0]);
}
IPods airpods = status.getAirpods();
boolean single = airpods.isSingle();
@@ -132,7 +132,7 @@ public class PodsService extends Service {
public void onCreate () {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startForeground(101, createBackgroundNotification());
unregisterBtReceiver();
@@ -25,7 +25,7 @@ public class StartupReceiver extends BroadcastReceiver {
}
public static void startPodsService (Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
context.startForegroundService(new Intent(context, PodsService.class));
else
context.startService(new Intent(context, PodsService.class));
@@ -72,7 +72,7 @@ public class IntroActivity extends AppCompatActivity {
return STEP_PERMISSION_BATTERY_OPTIMIZATION;
if (!PermissionUtils.getFineLocationPermission(this))
return STEP_PERMISSION_LOCATION;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) if (!PermissionUtils.getBackgroundLocationPermission(this))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) if (!PermissionUtils.getBackgroundLocationPermission(this))
return STEP_PERMISSION_BACKGROUND_LOCATION;
return 0;
@@ -81,7 +81,7 @@ public class IntroActivity extends AppCompatActivity {
@SuppressLint("BatteryLife")
private void initScreen () {
int currentStep = getPermissionState() - ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) ? 0 : 1);
int numOfSteps = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) ? ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) ? 4 : 3) : 2;
int numOfSteps = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) ? ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) ? 4 : 3) : 2;
runOnUiThread(() -> {
switch (getPermissionState()) {
@@ -109,7 +109,7 @@ public class IntroActivity extends AppCompatActivity {
case STEP_PERMISSION_BACKGROUND_LOCATION:
msg.setText(String.format(Locale.getDefault(), "%s %d/%d: %s", getString(R.string.intro_step), currentStep, numOfSteps, getString(R.string.intro_loc2_perm)));
btn.setOnClickListener(view -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) requestPermissions(new String[] {Manifest.permission.ACCESS_BACKGROUND_LOCATION}, BACKGROUND_LOCATION_REQUEST_CODE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) requestPermissions(new String[] {Manifest.permission.ACCESS_BACKGROUND_LOCATION}, BACKGROUND_LOCATION_REQUEST_CODE);
});
break;
}
@@ -37,7 +37,7 @@ public class PermissionUtils {
}
public static boolean getLocationPermissions (Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
return getFineLocationPermission(context) && getBackgroundLocationPermission(context);
else
return getFineLocationPermission(context);