mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 12:14:11 +00:00 
			
		
		
		
	Can request to disable battery optimisation
This commit is contained in:
		@@ -8,6 +8,7 @@
 | 
				
			|||||||
    <!-- These permissions are required to make video calls (WebRTC) -->
 | 
					    <!-- These permissions are required to make video calls (WebRTC) -->
 | 
				
			||||||
    <uses-feature android:name="android.hardware.camera" />
 | 
					    <uses-feature android:name="android.hardware.camera" />
 | 
				
			||||||
    <uses-feature android:name="android.hardware.camera.autofocus" />
 | 
					    <uses-feature android:name="android.hardware.camera.autofocus" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <uses-permission android:name="android.permission.CAMERA" />
 | 
					    <uses-permission android:name="android.permission.CAMERA" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
 | 
					    <uses-permission android:name="android.permission.RECORD_AUDIO" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
					    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
				
			||||||
@@ -25,29 +26,32 @@
 | 
				
			|||||||
        </intent>
 | 
					        </intent>
 | 
				
			||||||
    </queries>
 | 
					    </queries>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- This is required for independent push notifications service to work
 | 
				
			||||||
 | 
					            (when FCM service can not be used) -->
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
 | 
					    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
 | 
				
			||||||
         calls FlutterMain.startInitialization(this); in its onCreate method.
 | 
					         calls FlutterMain.startInitialization(this); in its onCreate method.
 | 
				
			||||||
         In most cases you can leave this as-is, but you if you want to provide
 | 
					         In most cases you can leave this as-is, but you if you want to provide
 | 
				
			||||||
         additional functionality it is fine to subclass or reimplement
 | 
					         additional functionality it is fine to subclass or reimplement
 | 
				
			||||||
         FlutterApplication and put your custom class here. -->
 | 
					         FlutterApplication and put your custom class here. -->
 | 
				
			||||||
    <application
 | 
					    <application
 | 
				
			||||||
        android:label="Comunic"
 | 
					 | 
				
			||||||
        android:icon="@mipmap/ic_launcher"
 | 
					        android:icon="@mipmap/ic_launcher"
 | 
				
			||||||
 | 
					        android:label="Comunic"
 | 
				
			||||||
        android:roundIcon="@mipmap/ic_launcher_round"
 | 
					        android:roundIcon="@mipmap/ic_launcher_round"
 | 
				
			||||||
        tools:ignore="GoogleAppIndexingWarning">
 | 
					        tools:ignore="GoogleAppIndexingWarning">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        <meta-data
 | 
					        <meta-data
 | 
				
			||||||
            android:name="flutterEmbedding"
 | 
					            android:name="flutterEmbedding"
 | 
				
			||||||
            android:value="2" />
 | 
					            android:value="2" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <activity
 | 
					        <activity
 | 
				
			||||||
            android:name=".MainActivity"
 | 
					            android:name=".MainActivity"
 | 
				
			||||||
            android:launchMode="singleTop"
 | 
					 | 
				
			||||||
            android:theme="@style/LaunchTheme"
 | 
					 | 
				
			||||||
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
 | 
					            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
 | 
				
			||||||
            android:hardwareAccelerated="true"
 | 
					            android:hardwareAccelerated="true"
 | 
				
			||||||
 | 
					            android:launchMode="singleTop"
 | 
				
			||||||
 | 
					            android:theme="@style/LaunchTheme"
 | 
				
			||||||
            android:windowSoftInputMode="adjustResize">
 | 
					            android:windowSoftInputMode="adjustResize">
 | 
				
			||||||
            <!-- This keeps the window background of the activity showing
 | 
					            <!-- This keeps the window background of the activity showing
 | 
				
			||||||
                 until Flutter renders its first frame. It can be removed if
 | 
					                 until Flutter renders its first frame. It can be removed if
 | 
				
			||||||
@@ -56,8 +60,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            <meta-data
 | 
					            <meta-data
 | 
				
			||||||
                android:name="io.flutter.embedding.android.NormalTheme"
 | 
					                android:name="io.flutter.embedding.android.NormalTheme"
 | 
				
			||||||
                android:resource="@style/NormalTheme"
 | 
					                android:resource="@style/NormalTheme" />
 | 
				
			||||||
                />
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <!-- Specify that the launch screen should continue being displayed -->
 | 
					            <!-- Specify that the launch screen should continue being displayed -->
 | 
				
			||||||
            <!-- until Flutter renders its first frame. -->
 | 
					            <!-- until Flutter renders its first frame. -->
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,9 @@ public class MainActivity extends FlutterActivity {
 | 
				
			|||||||
        super.configureFlutterEngine(flutterEngine);
 | 
					        super.configureFlutterEngine(flutterEngine);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), INDEPENDENT_NOTIFICATIONS_CHANNEL)
 | 
					        new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), INDEPENDENT_NOTIFICATIONS_CHANNEL)
 | 
				
			||||||
        .setMethodCallHandler(new NotificationsChannel());
 | 
					                .setMethodCallHandler(new NotificationsChannel(this));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,30 @@
 | 
				
			|||||||
package org.communiquons.comunic.independentnotifications;
 | 
					package org.communiquons.comunic.independentnotifications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.annotation.SuppressLint;
 | 
				
			||||||
 | 
					import android.app.Activity;
 | 
				
			||||||
 | 
					import android.content.Context;
 | 
				
			||||||
 | 
					import android.content.Intent;
 | 
				
			||||||
 | 
					import android.net.Uri;
 | 
				
			||||||
 | 
					import android.os.PowerManager;
 | 
				
			||||||
 | 
					import android.provider.Settings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import androidx.annotation.NonNull;
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import io.flutter.plugin.common.MethodCall;
 | 
					import io.flutter.plugin.common.MethodCall;
 | 
				
			||||||
import io.flutter.plugin.common.MethodChannel;
 | 
					import io.flutter.plugin.common.MethodChannel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class NotificationsChannel implements MethodChannel.MethodCallHandler {
 | 
					public class NotificationsChannel implements MethodChannel.MethodCallHandler {
 | 
				
			||||||
 | 
					    private final Context context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public NotificationsChannel(Activity context) {
 | 
				
			||||||
 | 
					        this.context = context.getApplicationContext();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
 | 
					    public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (call.method.equals("preConfigure"))
 | 
					            if (call.method.equals("preConfigure"))
 | 
				
			||||||
                preConfigure(result);
 | 
					                preConfigure(result);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -25,7 +40,19 @@ public class NotificationsChannel implements MethodChannel.MethodCallHandler {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Pre-configure notifications service
 | 
					     * Pre-configure notifications service
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private static void preConfigure(@NonNull MethodChannel.Result result) throws Exception {
 | 
					    private void preConfigure(@NonNull MethodChannel.Result result) throws Exception {
 | 
				
			||||||
        System.out.println("Ready to pre-configure !");
 | 
					        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
 | 
				
			||||||
 | 
					            if (!context.getSystemService(PowerManager.class).isIgnoringBatteryOptimizations(context.getPackageName())) {
 | 
				
			||||||
 | 
					                @SuppressLint("BatteryLife")
 | 
				
			||||||
 | 
					                Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
 | 
				
			||||||
 | 
					                        Uri.parse("package:" + context.getPackageName()));
 | 
				
			||||||
 | 
					                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                context.startActivity(intent);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result.success(null);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user