0
0
mirror of https://git.code.sf.net/p/opencamera/code.git synced 2024-09-19 19:42:29 +02:00

Fix crash for tiles for targetting Android 14.

This commit is contained in:
Mark Harman 2024-05-08 22:26:49 +01:00
parent abdc70d8f2
commit ba2b9bf1a0
3 changed files with 39 additions and 3 deletions

View File

@ -1,5 +1,6 @@
package net.sourceforge.opencamera;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.service.quicksettings.TileService;
@ -46,6 +47,17 @@ public class MyTileService extends TileService {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setAction(TILE_ID);
startActivityAndCollapse(intent); // use this instead of startActivity() so that the notification panel doesn't remain pulled down
// use startActivityAndCollapse() instead of startActivity() so that the notification panel doesn't remain pulled down
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ) {
// startActivityAndCollapse(Intent) throws UnsupportedOperationException on Android 14+
// FLAG_IMMUTABLE needed for PendingIntents on Android 12+
PendingIntent pending_intent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
startActivityAndCollapse(pending_intent);
}
else {
// still get warning for startActivityAndCollapse being deprecated, but startActivityAndCollapse(PendingIntent) requires Android 14+
// and only seems possible to disable the warning for the function, not this statement
startActivityAndCollapse(intent);
}
}
}

View File

@ -1,5 +1,6 @@
package net.sourceforge.opencamera;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.service.quicksettings.TileService;
@ -46,6 +47,17 @@ public class MyTileServiceFrontCamera extends TileService {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setAction(TILE_ID);
startActivityAndCollapse(intent); // use this instead of startActivity() so that the notification panel doesn't remain pulled down
// use startActivityAndCollapse() instead of startActivity() so that the notification panel doesn't remain pulled down
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ) {
// startActivityAndCollapse(Intent) throws UnsupportedOperationException on Android 14+
// FLAG_IMMUTABLE needed for PendingIntents on Android 12+
PendingIntent pending_intent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
startActivityAndCollapse(pending_intent);
}
else {
// still get warning for startActivityAndCollapse being deprecated, but startActivityAndCollapse(PendingIntent) requires Android 14+
// and only seems possible to disable the warning for the function, not this statement
startActivityAndCollapse(intent);
}
}
}

View File

@ -1,5 +1,6 @@
package net.sourceforge.opencamera;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.service.quicksettings.TileService;
@ -46,6 +47,17 @@ public class MyTileServiceVideo extends TileService {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setAction(TILE_ID);
startActivityAndCollapse(intent); // use this instead of startActivity() so that the notification panel doesn't remain pulled down
// use startActivityAndCollapse() instead of startActivity() so that the notification panel doesn't remain pulled down
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE ) {
// startActivityAndCollapse(Intent) throws UnsupportedOperationException on Android 14+
// FLAG_IMMUTABLE needed for PendingIntents on Android 12+
PendingIntent pending_intent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);
startActivityAndCollapse(pending_intent);
}
else {
// still get warning for startActivityAndCollapse being deprecated, but startActivityAndCollapse(PendingIntent) requires Android 14+
// and only seems possible to disable the warning for the function, not this statement
startActivityAndCollapse(intent);
}
}
}