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