CW-572-Disable-battery-optimization (#1285)

* feat: Disable battery optimization on android

* fix: Add permission to androidmanifestbase file

* Increase the frequency of app running in background on aggressive mode

* Revert the sync mode frequency [skip ci]

* Fix translation

* increase frequency to 1 hour

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
Adegoke David 2024-02-09 00:11:41 +01:00 committed by GitHub
parent 0832e62719
commit d6e10bdbd5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 200 additions and 8 deletions

View file

@ -8,6 +8,7 @@
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<application
android:name=".Application"

View file

@ -15,6 +15,10 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.WindowManager;
import android.content.Intent;
import android.net.Uri;
import android.os.PowerManager;
import android.provider.Settings;
import com.unstoppabledomains.resolution.DomainResolution;
import com.unstoppabledomains.resolution.Resolution;
@ -65,6 +69,14 @@ public class MainActivity extends FlutterFragmentActivity {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
break;
case "disableBatteryOptimization":
disableBatteryOptimization();
handler.post(() -> result.success(null));
break;
case "isBatteryOptimizationDisabled":
boolean isDisabled = isBatteryOptimizationDisabled();
handler.post(() -> result.success(isDisabled));
break;
default:
handler.post(() -> result.notImplemented());
}
@ -89,4 +101,22 @@ public class MainActivity extends FlutterFragmentActivity {
}
});
}
private void disableBatteryOptimization() {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
}
private boolean isBatteryOptimizationDisabled() {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
return pm.isIgnoringBatteryOptimizations(packageName);
}
}

View file

@ -14,6 +14,10 @@ import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.view.WindowManager;
import android.content.Intent;
import android.net.Uri;
import android.os.PowerManager;
import android.provider.Settings;
import com.unstoppabledomains.resolution.DomainResolution;
import com.unstoppabledomains.resolution.Resolution;
@ -55,6 +59,14 @@ public class MainActivity extends FlutterFragmentActivity {
handler.post(() -> result.success(""));
}
break;
case "disableBatteryOptimization":
disableBatteryOptimization();
handler.post(() -> result.success(null));
break;
case "isBatteryOptimizationDisabled":
boolean isDisabled = isBatteryOptimizationDisabled();
handler.post(() -> result.success(isDisabled));
break;
default:
handler.post(() -> result.notImplemented());
}
@ -79,4 +91,22 @@ public class MainActivity extends FlutterFragmentActivity {
}
});
}
private void disableBatteryOptimization() {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
}
private boolean isBatteryOptimizationDisabled() {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
return pm.isIgnoringBatteryOptimizations(packageName);
}
}

View file

@ -14,6 +14,10 @@ import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.view.WindowManager;
import android.content.Intent;
import android.net.Uri;
import android.os.PowerManager;
import android.provider.Settings;
import com.unstoppabledomains.resolution.DomainResolution;
import com.unstoppabledomains.resolution.Resolution;
@ -64,6 +68,14 @@ public class MainActivity extends FlutterFragmentActivity {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
break;
case "disableBatteryOptimization":
disableBatteryOptimization();
handler.post(() -> result.success(null));
break;
case "isBatteryOptimizationDisabled":
boolean isDisabled = isBatteryOptimizationDisabled();
handler.post(() -> result.success(isDisabled));
break;
default:
handler.post(() -> result.notImplemented());
}
@ -88,4 +100,22 @@ public class MainActivity extends FlutterFragmentActivity {
}
});
}
private void disableBatteryOptimization() {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
}
private boolean isBatteryOptimizationDisabled() {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
return pm.isIgnoringBatteryOptimizations(packageName);
}
}