From 048b0972de545f1ceb5e3b89a36f1a8b05a4db83 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 5 Nov 2022 23:44:35 +0100 Subject: [PATCH 1/3] Set compileSdk and targetSdk to 33 (Android 13) android:exported in now required in the manifest on all activities/services/receivers/providers. It was set to true for those that need to interact with outside apps or the OS, while others have exported=false. This also required updating LeakCanary to the latest version as the older version being used was not using android:exported in AndroidManifest.xml. --- app/build.gradle | 6 +- app/src/main/AndroidManifest.xml | 67 ++++++++++++------- .../gesture/PopupPlayerGestureListener.kt | 6 +- 3 files changed, 50 insertions(+), 29 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 206c830e7..2dfbeb55f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,14 +8,14 @@ plugins { } android { - compileSdk 32 + compileSdk 33 namespace 'org.schabi.newpipe' defaultConfig { applicationId "org.schabi.newpipe" resValue "string", "app_name", "NewPipe" minSdk 21 - targetSdk 29 + targetSdk 33 versionCode 991 versionName "0.24.1" @@ -107,7 +107,7 @@ ext { groupieVersion = '2.10.1' markwonVersion = '4.6.2' - leakCanaryVersion = '2.5' + leakCanaryVersion = '2.9.1' stethoVersion = '1.6.0' mockitoVersion = '4.0.0' assertJVersion = '3.23.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index be14274aa..7a0eacdf6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,11 +24,12 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:logo="@mipmap/ic_launcher" - android:theme="@style/OpeningTheme" android:resizeableActivity="true" + android:theme="@style/OpeningTheme" tools:ignore="AllowBackup"> @@ -39,7 +40,9 @@ - + @@ -47,7 +50,7 @@ @@ -56,15 +59,18 @@ @@ -73,6 +79,7 @@ @@ -85,13 +92,18 @@ - + + @@ -99,6 +111,7 @@ @@ -109,6 +122,7 @@ @@ -354,30 +369,30 @@ - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + @@ -386,11 +401,17 @@ android:exported="false" /> - + - + - + diff --git a/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt b/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt index 666ea6a46..a540c0ab0 100644 --- a/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt +++ b/app/src/main/java/org/schabi/newpipe/player/gesture/PopupPlayerGestureListener.kt @@ -160,15 +160,15 @@ class PopupPlayerGestureListener( } } - override fun onLongPress(e: MotionEvent?) { + override fun onLongPress(e: MotionEvent) { playerUi.updateScreenSize() playerUi.checkPopupPositionBounds() playerUi.changePopupSize(playerUi.screenWidth) } override fun onFling( - e1: MotionEvent?, - e2: MotionEvent?, + e1: MotionEvent, + e2: MotionEvent, velocityX: Float, velocityY: Float ): Boolean { From f07886fc5e5ef6068f70f2e1083a7ed8a269e96a Mon Sep 17 00:00:00 2001 From: Stypox Date: Mon, 28 Nov 2022 18:23:47 +0100 Subject: [PATCH 2/3] Add notifications permission --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7a0eacdf6..7aa1a2939 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + Date: Mon, 28 Nov 2022 18:49:11 +0100 Subject: [PATCH 3/3] Request permission to send notifications --- .../java/org/schabi/newpipe/MainActivity.java | 12 +++++++++--- .../schabi/newpipe/util/PermissionHelper.java | 16 ++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index d4b2305c7..a703b9e80 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -157,9 +157,12 @@ public class MainActivity extends AppCompatActivity { } openMiniPlayerUponPlayerStarted(); - // Schedule worker for checking for new streams and creating corresponding notifications - // if this is enabled by the user. - NotificationWorker.initialize(this); + if (PermissionHelper.checkPostNotificationsPermission(this, + PermissionHelper.POST_NOTIFICATIONS_REQUEST_CODE)) { + // Schedule worker for checking for new streams and creating corresponding notifications + // if this is enabled by the user. + NotificationWorker.initialize(this); + } } @Override @@ -599,6 +602,9 @@ public class MainActivity extends AppCompatActivity { ((VideoDetailFragment) fragment).openDownloadDialog(); } break; + case PermissionHelper.POST_NOTIFICATIONS_REQUEST_CODE: + NotificationWorker.initialize(this); + break; } } diff --git a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java index f3151ec8b..f47494770 100644 --- a/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java @@ -21,6 +21,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.settings.NewPipeSettings; public final class PermissionHelper { + public static final int POST_NOTIFICATIONS_REQUEST_CODE = 779; public static final int DOWNLOAD_DIALOG_REQUEST_CODE = 778; public static final int DOWNLOADS_REQUEST_CODE = 777; @@ -71,8 +72,7 @@ public final class PermissionHelper { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(activity, - new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, - requestCode); + new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode); // PERMISSION_WRITE_STORAGE is an // app-defined int constant. The callback method gets the @@ -83,6 +83,18 @@ public final class PermissionHelper { return true; } + public static boolean checkPostNotificationsPermission(final Activity activity, + final int requestCode) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU + && ContextCompat.checkSelfPermission(activity, + Manifest.permission.POST_NOTIFICATIONS) + != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(activity, + new String[] {Manifest.permission.POST_NOTIFICATIONS}, requestCode); + return false; + } + return true; + } /** * In order to be able to draw over other apps,