From d611d20cfd18386dbbb67034f88c3b54946fa398 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 21 Aug 2020 10:40:27 +0200 Subject: [PATCH] Target SDK 30 --- .gitlab-ci-files/job-android.yml | 2 +- app/build.gradle | 4 +- .../chat/viewmodels/ChatRoomsListViewModel.kt | 4 +- .../contact/adapters/SyncAccountAdapter.kt | 4 +- .../viewmodels/RecordingViewModel.kt | 8 +-- .../linphone/compatibility/Compatibility.kt | 6 ++- .../org/linphone/contact/ContactsManager.kt | 4 +- .../linphone/contact/NativeContactEditor.kt | 32 ++++++++---- .../NotificationBroadcastReceiver.kt | 4 ++ .../main/res/layout/side_menu_fragment.xml | 2 + docker-files/bc-dev-android-30 | 50 +++++++++++++++++++ 11 files changed, 94 insertions(+), 26 deletions(-) create mode 100644 docker-files/bc-dev-android-30 diff --git a/.gitlab-ci-files/job-android.yml b/.gitlab-ci-files/job-android.yml index d7cdd85a4..4e86a575d 100644 --- a/.gitlab-ci-files/job-android.yml +++ b/.gitlab-ci-files/job-android.yml @@ -2,7 +2,7 @@ job-android: stage: build tags: [ "docker-android" ] - image: gitlab.linphone.org:4567/bc/public/linphone-android/bc-dev-android:29 + image: gitlab.linphone.org:4567/bc/public/linphone-android/bc-dev-android:30 before_script: - if ! [ -z ${SCP_PRIVATE_KEY+x} ]; then eval $(ssh-agent -s); fi diff --git a/app/build.gradle b/app/build.gradle index dfa911431..b93bd348a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,8 +53,8 @@ project.tasks['preBuild'].dependsOn 'getGitVersion' project.tasks['preBuild'].dependsOn 'linphoneSdkSource' android { - compileSdkVersion 29 - buildToolsVersion "29.0.3" + compileSdkVersion 30 + buildToolsVersion '30.0.2' defaultConfig { minSdkVersion 23 targetSdkVersion 29 diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt index 91fd3881f..4d65e1e3f 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomsListViewModel.kt @@ -119,7 +119,7 @@ class ChatRoomsListViewModel : ErrorReportingViewModel() { chatRoomsToDeleteCount = 1 if (chatRoom != null) { coreContext.notificationsManager.dismissChatNotification(chatRoom) - Compatibility.removeChatRoomShortcut(chatRoom) + Compatibility.removeChatRoomShortcut(coreContext.context, chatRoom) chatRoom.addListener(chatRoomListener) coreContext.core.deleteChatRoom(chatRoom) } @@ -133,7 +133,7 @@ class ChatRoomsListViewModel : ErrorReportingViewModel() { } coreContext.notificationsManager.dismissChatNotification(chatRoom) - Compatibility.removeChatRoomShortcut(chatRoom) + Compatibility.removeChatRoomShortcut(coreContext.context, chatRoom) chatRoom.addListener(chatRoomListener) chatRoom.core.deleteChatRoom(chatRoom) } diff --git a/app/src/main/java/org/linphone/activities/main/contact/adapters/SyncAccountAdapter.kt b/app/src/main/java/org/linphone/activities/main/contact/adapters/SyncAccountAdapter.kt index 3e76972d2..7d8f91c6c 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/adapters/SyncAccountAdapter.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/adapters/SyncAccountAdapter.kt @@ -12,7 +12,7 @@ import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R class SyncAccountAdapter : BaseAdapter() { - private var accounts: ArrayList> = arrayListOf() + private var accounts: ArrayList> = arrayListOf() init { accounts.addAll(coreContext.contactsManager.getAvailableSyncAccounts()) @@ -30,7 +30,7 @@ class SyncAccountAdapter : BaseAdapter() { return view } - override fun getItem(position: Int): Triple { + override fun getItem(position: Int): Triple { return accounts[position] } diff --git a/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingViewModel.kt b/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingViewModel.kt index c5c33fdaf..afc944062 100644 --- a/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/recordings/viewmodels/RecordingViewModel.kt @@ -137,19 +137,19 @@ class RecordingViewModel(val path: String) : ViewModel(), Comparable> { + fun getAvailableSyncAccounts(): List> { val accountManager = context.getSystemService(Context.ACCOUNT_SERVICE) as AccountManager val packageManager = context.packageManager val syncAdapters = ContentResolver.getSyncAdapterTypes() val authenticators: Array = accountManager.authenticatorTypes - val available = arrayListOf>() + val available = arrayListOf>() for (syncAdapter in syncAdapters) { if (syncAdapter.authority == "com.android.contacts" && syncAdapter.isUserVisible) { diff --git a/app/src/main/java/org/linphone/contact/NativeContactEditor.kt b/app/src/main/java/org/linphone/contact/NativeContactEditor.kt index d1fd26965..a47d48d84 100644 --- a/app/src/main/java/org/linphone/contact/NativeContactEditor.kt +++ b/app/src/main/java/org/linphone/contact/NativeContactEditor.kt @@ -47,14 +47,23 @@ class NativeContactEditor(val contact: NativeContact) { val contentResolver = coreContext.context.contentResolver val results = contentResolver.applyBatch(ContactsContract.AUTHORITY, changes) for (result in results) { - Log.i("[Native Contact Editor] Contact creation result is ${result.uri}") - val cursor = contentResolver.query(result.uri, arrayOf(RawContacts.CONTACT_ID), null, null, null) - if (cursor != null) { - cursor.moveToNext() - val contactId: Long = cursor.getLong(0) - Log.i("[Native Contact Editor] New contact id is $contactId") - cursor.close() - return contactId + val uri = result.uri + Log.i("[Native Contact Editor] Contact creation result is $uri") + if (uri != null) { + val cursor = contentResolver.query( + uri, + arrayOf(RawContacts.CONTACT_ID), + null, + null, + null + ) + if (cursor != null) { + cursor.moveToNext() + val contactId: Long = cursor.getLong(0) + Log.i("[Native Contact Editor] New contact id is $contactId") + cursor.close() + return contactId + } } } @@ -301,9 +310,10 @@ class NativeContactEditor(val contact: NativeContact) { val contentResolver = coreContext.context.contentResolver val results = contentResolver.applyBatch(ContactsContract.AUTHORITY, changes) for (result in results) { - Log.i("[Native Contact Editor] Result is ${result.uri}") - if (updateSyncAccountRawId && syncAccountRawId == null && result?.uri != null) { - syncAccountRawId = ContentUris.parseId(result.uri).toString() + val uri = result.uri + Log.i("[Native Contact Editor] Result is $uri") + if (uri != null && updateSyncAccountRawId && syncAccountRawId == null) { + syncAccountRawId = ContentUris.parseId(uri).toString() Log.i("[Native Contact Editor] Sync account raw id is $syncAccountRawId") } } diff --git a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt index 25b006571..408506b1d 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt @@ -47,6 +47,10 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { return } + if (localIdentity == null) { + Log.e("[Notification Broadcast Receiver] Local identity is null for notification id $notificationId") + return + } val localAddress = core.interpretUrl(localIdentity) if (localAddress == null) { Log.e("[Notification Broadcast Receiver] Couldn't interpret local address $localIdentity") diff --git a/app/src/main/res/layout/side_menu_fragment.xml b/app/src/main/res/layout/side_menu_fragment.xml index ffb0a298f..87a0d5351 100644 --- a/app/src/main/res/layout/side_menu_fragment.xml +++ b/app/src/main/res/layout/side_menu_fragment.xml @@ -54,6 +54,7 @@ glideAvatarFallback="@{viewModel.defaultAccountAvatar}" /> diff --git a/docker-files/bc-dev-android-30 b/docker-files/bc-dev-android-30 new file mode 100644 index 000000000..d3182af8a --- /dev/null +++ b/docker-files/bc-dev-android-30 @@ -0,0 +1,50 @@ +FROM debian:stretch + +MAINTAINER Ghislain MARY + + +# Configure locale +RUN apt-get update && \ + apt-get install -y locales && \ + apt-get clean && \ + echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ + locale-gen +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' + +ENV SHELL=/bin/bash + +# Define environment +ENV ANDROID_SDK 25.2.5 +ENV ANDROID_HOME /opt/android-sdk-linux + +# Install common general tools +RUN apt-get update && \ + apt-get install -y curl nano sudo unzip vim wget openjdk-8-jdk-headless rsync ssh git && \ + apt-get clean + +# Get the Android tools +RUN wget https://dl.google.com/android/repository/tools_r$ANDROID_SDK-linux.zip && \ + unzip tools_r$ANDROID_SDK-linux.zip -d $ANDROID_HOME && \ + rm -f tools_r$ANDROID_SDK-linux.zip +ENV PATH $ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH + +# Get the Android SDK +RUN echo "y" | sdkmanager "platforms;android-30" "build-tools;30.0.2" "extras;android;m2repository" "extras;google;m2repository" "platform-tools" "tools" + +# Accept Android SDK licenses +RUN yes | sdkmanager --licenses + +# Update if needed +RUN echo y | android update sdk --no-ui --all --filter platform-tools +RUN echo y | android update sdk --no-ui --all --filter android-30 +RUN echo y | android update sdk --no-ui --all --filter build-tools-30.0.2 + +# Configure user bc +RUN useradd -ms /bin/bash bc && \ + echo 'bc:cotcot' | chpasswd && \ + echo 'bc ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers + +USER bc +WORKDIR /home/bc +ENV PS1='\[\e[34m\]\u@bc-dev-android>\[\e[0m\] ' +CMD bash