diff --git a/README b/README
index e2269f90d..8bcdc5a00 100644
--- a/README
+++ b/README
@@ -9,7 +9,7 @@ To build liblinphone for Android, you must:
-------------------------------------------
0) download the Android sdk (API 23 at least) with platform-tools and tools updated to latest revision, then add both 'tools' and 'platform-tools' folders in your path.
1) download the Android ndk (version r11c or 12b) from google and add it to your path (no symlink !!!).
-2) install yasm, nasm, ant, python, cmake and vim-common
+2) install yasm, nasm, ant, python, intltoolize, cmake and vim-common
On 64 bits linux systems you'll need the ia32-libs package
With the latest Debian (multiarch), you need this:
dpkg --add-architecture i386
diff --git a/custom_rules.xml b/custom_rules.xml
index 8e0297fe8..27e5e6956 100644
--- a/custom_rules.xml
+++ b/custom_rules.xml
@@ -74,7 +74,7 @@
+ includes="org/linphone/mediastream/**/*.class org/linphone/core/**/*.class org/linphone/tools/**/*.class"/>
@@ -93,7 +93,7 @@
+ includes="org/linphone/mediastream/**/*.class org/linphone/core/**/*.class org/linphone/**/*.class org/linphone/tools/**/*.class"/>
diff --git a/src/org/linphone/CallOutgoingActivity.java b/src/org/linphone/CallOutgoingActivity.java
index 2b9d1715f..4e890e39e 100644
--- a/src/org/linphone/CallOutgoingActivity.java
+++ b/src/org/linphone/CallOutgoingActivity.java
@@ -24,7 +24,6 @@ import java.util.List;
import org.linphone.core.LinphoneAddress;
import org.linphone.core.LinphoneCall;
import org.linphone.core.LinphoneCall.State;
-import org.linphone.core.LinphoneCallParams;
import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCoreListenerBase;
import org.linphone.core.Reason;
diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java
index a550e0085..a05bb8b50 100644
--- a/src/org/linphone/LinphoneActivity.java
+++ b/src/org/linphone/LinphoneActivity.java
@@ -1157,6 +1157,10 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
return true;
}
+ public void checkAndRequestReadPhoneStatePermission() {
+ checkAndRequestPermission(Manifest.permission.READ_PHONE_STATE, 0);
+ }
+
public void checkAndRequestReadExternalStoragePermission() {
checkAndRequestPermission(Manifest.permission.READ_EXTERNAL_STORAGE, 0);
}
@@ -1259,6 +1263,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
ContactsManager.getInstance().enableContactsAccess();
}
+ checkAndRequestReadPhoneStatePermission();
ContactsManager.getInstance().fetchContactsAsync();
fetchedContactsOnce = true;
break;
@@ -1286,15 +1291,26 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
int contacts = getPackageManager().checkPermission(Manifest.permission.READ_CONTACTS, getPackageName());
Log.i("[Permission] Contacts permission is " + (contacts == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
- if (contacts == PackageManager.PERMISSION_GRANTED && !fetchedContactsOnce) {
- ContactsManager.getInstance().enableContactsAccess();
- ContactsManager.getInstance().fetchContactsAsync();
- fetchedContactsOnce = true;
- } else if (contacts != PackageManager.PERMISSION_GRANTED && !willContactsPermissionBeAsked()) {
- ContactsManager.getInstance().fetchContactsAsync();
- fetchedContactsOnce = true;
+ int readPhone = getPackageManager().checkPermission(Manifest.permission.READ_PHONE_STATE, getPackageName());
+ Log.i("[Permission] Read phone state permission is " + (readPhone == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
+
+ if (contacts == PackageManager.PERMISSION_GRANTED) {
+ if (readPhone == PackageManager.PERMISSION_DENIED) {
+ checkAndRequestReadPhoneStatePermission();
+ }
+ if (!fetchedContactsOnce) {
+ ContactsManager.getInstance().enableContactsAccess();
+ ContactsManager.getInstance().fetchContactsAsync();
+ fetchedContactsOnce = true;
+ }
} else {
- checkAndRequestReadContactsPermission();
+ if (!willContactsPermissionBeAsked()) {
+ ContactsManager.getInstance().fetchContactsAsync();
+ fetchedContactsOnce = true;
+ checkAndRequestReadPhoneStatePermission();
+ } else {
+ checkAndRequestReadContactsPermission(); // This will ask for Read_Phone_State permission on it's cb
+ }
}
}
diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java
index a09ad9bda..983000d46 100644
--- a/src/org/linphone/LinphoneManager.java
+++ b/src/org/linphone/LinphoneManager.java
@@ -66,7 +66,6 @@ import org.linphone.core.PublishState;
import org.linphone.core.SubscriptionState;
import org.linphone.core.TunnelConfig;
import org.linphone.mediastream.Log;
-import org.linphone.mediastream.MediastreamerAndroidContext;
import org.linphone.mediastream.Version;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration;
import org.linphone.mediastream.video.capture.hwconf.AndroidCameraConfiguration.AndroidCamera;
diff --git a/submodules/bctoolbox b/submodules/bctoolbox
index 921a21332..c11f1e70a 160000
--- a/submodules/bctoolbox
+++ b/submodules/bctoolbox
@@ -1 +1 @@
-Subproject commit 921a21332c327ae99900267950be0bfd2d7c6126
+Subproject commit c11f1e70ad21d81e443b9678f22b9e2b2d0a8b77
diff --git a/submodules/belle-sip b/submodules/belle-sip
index 0b825c68d..13b449826 160000
--- a/submodules/belle-sip
+++ b/submodules/belle-sip
@@ -1 +1 @@
-Subproject commit 0b825c68d2c69385d277f7833f21c6c0a3f4ad8d
+Subproject commit 13b4498265ec3e4d356caf79da4cc7d7eb5afef4
diff --git a/submodules/linphone b/submodules/linphone
index 56b08128b..510e9d92d 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit 56b08128b41a64ae95b708ce61f1a9328016d3a4
+Subproject commit 510e9d92d051c0bedc2803669f6aa81bda7c3cb9