diff --git a/AnkiDroid/build.gradle b/AnkiDroid/build.gradle index 29d03ed737..02c913504b 100644 --- a/AnkiDroid/build.gradle +++ b/AnkiDroid/build.gradle @@ -26,7 +26,7 @@ idea { def homePath = System.properties['user.home'] android { - compileSdkVersion 32 // change api compileSdkVersion at the same time + compileSdkVersion 33 // change api compileSdkVersion at the same time defaultConfig { applicationId "com.ichi2.anki" diff --git a/api/build.gradle b/api/build.gradle index ffec482a4e..afe0eaadd9 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -12,7 +12,7 @@ repositories { mavenCentral() } android { - compileSdkVersion 32 + compileSdkVersion 33 defaultConfig { minSdkVersion 14 diff --git a/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt b/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt index 9d52067327..4c01f00bf8 100644 --- a/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt +++ b/api/src/main/java/com/ichi2/anki/api/AddContentApi.kt @@ -584,16 +584,26 @@ class AddContentApi(context: Context) { * @return the spec version number or -1 if AnkiDroid is not installed. */ // TODO: Kotlin Cleanup - val or fun - likely needs JvmField either way. + @Suppress("deprecation") // API33 symbol required until minSdkVersion >= 33 val apiHostSpecVersion: Int get() { // PackageManager#resolveContentProvider docs suggest flags should be 0 (but that gives null metadata) // GET_META_DATA seems to work anyway - val info = mContext.packageManager.resolveContentProvider( - FlashCardsContract.AUTHORITY, - PackageManager.GET_META_DATA - ) - ?: return -1 - return if (info.metaData != null && info.metaData.containsKey( + val info = + if (Build.VERSION.SDK_INT >= 33) + mContext.packageManager.resolveContentProvider( + FlashCardsContract.AUTHORITY, + PackageManager.ComponentInfoFlags.of( + PackageManager.GET_META_DATA.toLong() + ) + ) + else + mContext.packageManager.resolveContentProvider( + FlashCardsContract.AUTHORITY, + PackageManager.GET_META_DATA + ) + + return if (info?.metaData != null && info.metaData.containsKey( PROVIDER_SPEC_META_DATA_KEY ) ) { @@ -816,10 +826,16 @@ class AddContentApi(context: Context) { * @return packageId of AnkiDroid if a supported version is not installed, otherwise null */ // TODO: Kotlin Cleanup: simplify into one line fun + @Suppress("deprecation") // deprecated symbol until minSdkVersion >= 33 fun getAnkiDroidPackageName(context: Context): String? { val manager = context.packageManager - val pi = manager.resolveContentProvider(FlashCardsContract.AUTHORITY, 0) - return pi?.packageName + return if (Build.VERSION.SDK_INT >= 33) + manager.resolveContentProvider( + FlashCardsContract.AUTHORITY, + PackageManager.ComponentInfoFlags.of(0L) + )?.packageName + else + manager.resolveContentProvider(FlashCardsContract.AUTHORITY, 0)?.packageName } }