diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 84c64b18e..3baba3a38 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -7,7 +7,7 @@
+ android:targetSdkVersion="27"/>
diff --git a/AndroidManifestSdk.xml b/AndroidManifestSdk.xml
new file mode 100755
index 000000000..6a132d3d1
--- /dev/null
+++ b/AndroidManifestSdk.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/README.md b/README.md
index 36c677fde..113bde647 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+[](https://gitlab.linphone.org/BC/public/linphone-android/commits/master)
+
Linphone is a free VoIP and video softphone based on the SIP protocol.
# COMPILATION INSTRUCTIONS
diff --git a/build.gradle b/build.gradle
index a388ff7d6..16902bf25 100644
--- a/build.gradle
+++ b/build.gradle
@@ -47,7 +47,7 @@ dependencies {
if (firebaseEnable()) {
implementation 'com.google.firebase:firebase-messaging:15.0.2'
}
- implementation 'com.android.support:support-v4:26.0.1'
+ implementation 'com.android.support:support-v4:27.0.1'
implementation project(':liblinphone-sdk')
}
@@ -79,6 +79,7 @@ excludePackage.add('**/LICENSE.txt')
android {
defaultConfig {
compileSdkVersion 26
+ buildToolsVersion "27.0.3"
applicationId getPackageName()
multiDexEnabled true
@@ -155,7 +156,7 @@ android {
packagingOptions {
pickFirst 'META-INF/NOTICE'
pickFirst 'META-INF/LICENSE'
- pickFirst 'META-INF/MANIFEST.MF'
+ exclude 'META-INF/MANIFEST.MF'
}
}
diff --git a/liblinphone-sdk/build.gradle b/liblinphone-sdk/build.gradle
index 4098e7085..fc7b6a88d 100644
--- a/liblinphone-sdk/build.gradle
+++ b/liblinphone-sdk/build.gradle
@@ -73,7 +73,7 @@ android {
defaultConfig {
compileSdkVersion 26
- buildToolsVersion "26.0.0"
+ buildToolsVersion "27.0.3"
multiDexEnabled true
}
diff --git a/linphoneAndroidSdk.gradle b/linphoneAndroidSdk.gradle
index 874c962f8..34b5c80b0 100644
--- a/linphoneAndroidSdk.gradle
+++ b/linphoneAndroidSdk.gradle
@@ -26,7 +26,7 @@ allprojects {
apply plugin: 'com.android.library'
dependencies {
- compile group: 'org.apache.commons', name: 'commons-compress', version: '+'
+ compile group: 'org.apache.commons', name: 'commons-compress', version: '1.16.1'
compile 'com.android.support:support-v4:26.0.2'
}
@@ -49,6 +49,7 @@ excludePackage.add('**/LICENSE.txt')
android {
defaultConfig {
compileSdkVersion 26
+ buildToolsVersion "27.0.3"
multiDexEnabled true
}
@@ -61,7 +62,7 @@ android {
sourceSets {
main {
- manifest.srcFile 'AndroidManifestLibrary.xml'
+ manifest.srcFile 'AndroidManifestSdk.xml'
java.srcDirs = srcDirs
resources.srcDirs = srcDirs
aidl.srcDirs = srcDirs
diff --git a/prepare.py b/prepare.py
index 30479e28d..ee5063a73 100755
--- a/prepare.py
+++ b/prepare.py
@@ -144,7 +144,7 @@ class AndroidPreparator(prepare.Preparator):
retval = True
ndk_build = find_executable('ndk-build')
ndk_path = os.path.dirname(ndk_build)
- # NDK prior to r11 had a RELEASE.TXT file holding the version number
+ # NDK prior to r11 had a RELEASE.TXT file holding the version number
release_file = os.path.join(ndk_path, 'RELEASE.TXT')
if os.path.isfile(release_file):
version = open(release_file).read().strip()
diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java
index 41c65f2f2..e9638139f 100644
--- a/src/android/org/linphone/LinphoneManager.java
+++ b/src/android/org/linphone/LinphoneManager.java
@@ -584,7 +584,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
BluetoothManagerDestroy();
try {
mTimer.cancel();
- mLc = null;
+ destroyLinphoneCore();
}
catch (RuntimeException e) {
Log.e(e);
@@ -623,6 +623,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
}
}
+
public void restartCore() {
destroyCore();
startLibLinphone(mServiceContext);
@@ -917,51 +918,6 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
mLc = null;
}
- @TargetApi(Build.VERSION_CODES.HONEYCOMB)
- private void doDestroy() {
- ContactsManagerDestroy();
- BluetoothManagerDestroy();
- try {
- mTimer.cancel();
- destroyLinphoneCore();
- }
- catch (RuntimeException e) {
- Log.e(e);
- }
- finally {
- try {
- if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
- mServiceContext.unregisterReceiver(mNetworkReceiver);
- }
- } catch (Exception e) {
- Log.e(e);
- }
- try {
- mServiceContext.unregisterReceiver(mHookReceiver);
- } catch (Exception e) {
- Log.e(e);
- }
- try {
- mServiceContext.unregisterReceiver(mKeepAliveReceiver);
- } catch (Exception e) {
- Log.e(e);
- }
- try {
- mServiceContext.unregisterReceiver(mCallReceiver);
- } catch (Exception e) {
- Log.e(e);
- }
- try {
- dozeManager(false);
- } catch (IllegalArgumentException iae) {
- Log.e(iae);
- } catch (Exception e) {
- Log.e(e);
- }
- instance = null;
- }
- }
-
public void dozeManager(boolean enable) {
if (enable) {
Log.i("[Doze Mode]: register");
@@ -1045,7 +1001,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
if (instance == null) return;
getInstance().changeStatusToOffline();
sExited = true;
- instance.doDestroy();
+ instance.destroyCore();
}
private String getString(int key) {
diff --git a/src/android/org/linphone/LinphonePreferences.java b/src/android/org/linphone/LinphonePreferences.java
index d36a974e7..dc3d573f4 100644
--- a/src/android/org/linphone/LinphonePreferences.java
+++ b/src/android/org/linphone/LinphonePreferences.java
@@ -370,6 +370,13 @@ public class LinphonePreferences {
prxCfg.setQualityReportingCollector(tempQualityReportingCollector);
prxCfg.setQualityReportingInterval(tempQualityReportingInterval);
+ String regId = LinphonePreferences.instance().getPushNotificationRegistrationID();
+ String appId = LinphonePreferences.instance().getString(R.string.push_sender_id);
+ if (regId != null && LinphonePreferences.instance().isPushNotificationEnabled()) {
+ String contactInfos = "app-id=" + appId + ";pn-type=" + LinphonePreferences.instance().getString(R.string.push_type) + ";pn-tok=" + regId + ";pn-silent=1";
+ prxCfg.setContactUriParameters(contactInfos);
+ }
+
if(tempPrefix != null){
prxCfg.setDialPrefix(tempPrefix);
}
diff --git a/src/android/org/linphone/LinphoneUtils.java b/src/android/org/linphone/LinphoneUtils.java
index 2391e4b7f..00933b03b 100644
--- a/src/android/org/linphone/LinphoneUtils.java
+++ b/src/android/org/linphone/LinphoneUtils.java
@@ -609,11 +609,7 @@ public final class LinphoneUtils {
if ("com.android.externalstorage.documents".equals(uri.getAuthority())) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
- final String type = split[0];
-
- if ("primary".equalsIgnoreCase(type)) {
- return Environment.getExternalStorageDirectory() + "/" + split[1];
- }
+ if (split.length >= 1) return Environment.getExternalStorageDirectory() + "/" + split[1];
// TODO handle non-primary volumes
}// Docs storage
diff --git a/src/android/org/linphone/firebase/FirebaseMessaging.java b/src/android/org/linphone/firebase/FirebaseMessaging.java
index 49cf49271..fd78503c4 100644
--- a/src/android/org/linphone/firebase/FirebaseMessaging.java
+++ b/src/android/org/linphone/firebase/FirebaseMessaging.java
@@ -39,6 +39,7 @@ public class FirebaseMessaging extends FirebaseMessagingService {
android.util.Log.i("FirebaseMessaging","[Push Notification] Received");
if (!LinphoneService.isReady()) {
+ android.util.Log.i("FirebaseMessaging","[Push Notification] Starting Service");
startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class));
} else if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) {
LinphoneUtils.dispatchOnUIThread(new Runnable(){
diff --git a/submodules/externals/mbedtls b/submodules/externals/mbedtls
index d9385339a..83d21d543 160000
--- a/submodules/externals/mbedtls
+++ b/submodules/externals/mbedtls
@@ -1 +1 @@
-Subproject commit d9385339a5c2979786cfc844c0527593c14662c5
+Subproject commit 83d21d543c26a31943b2bd08c66b029f2ef742be
diff --git a/submodules/linphone b/submodules/linphone
index b1e084c4c..c448d2e00 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit b1e084c4c842b6dd5722f418184bf6ec228e5058
+Subproject commit c448d2e0018ca9baa45afe216241fc354cc4edef
diff --git a/submodules/mediastreamer2 b/submodules/mediastreamer2
index f6e4cc214..9add24c20 160000
--- a/submodules/mediastreamer2
+++ b/submodules/mediastreamer2
@@ -1 +1 @@
-Subproject commit f6e4cc2142821b2c8ac80c644405d9cd42b3216e
+Subproject commit 9add24c2041e1bcf7b51ae580575ef56aa408f3e
diff --git a/test.patch b/test.patch
deleted file mode 100644
index 667714692..000000000
--- a/test.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/AndroidManifest.xml b/AndroidManifest.xml
-index 9ee95b62..bb763a24 100755
---- a/AndroidManifest.xml
-+++ b/AndroidManifest.xml
-@@ -287,15 +287,15 @@
-
-
-
--
-
--
-+ -->
-
-