Fix crash with the presence + fix issue 1875: Use encoded URL strings for provisioning

This commit is contained in:
Sylvain Berfini 2014-12-01 16:24:59 +01:00
parent d34aa69d79
commit 12e7d572c0
2 changed files with 24 additions and 12 deletions

View file

@ -215,36 +215,40 @@ public class LinphoneManager implements LinphoneListener {
} }
private boolean isPresenceModelActivitySet() { private boolean isPresenceModelActivitySet() {
if (isInstanciated() && getLcIfManagerNotDestroyedOrNull() != null) { LinphoneCore lc = getLcIfManagerNotDestroyedOrNull();
return getLc().getPresenceModel() != null || getLc().getPresenceModel().getActivity() != null; if (isInstanciated() && lc != null) {
return lc.getPresenceModel() != null && lc.getPresenceModel().getActivity() != null;
} }
return false; return false;
} }
public void changeStatusToOnline() { public void changeStatusToOnline() {
if (isInstanciated() && getLcIfManagerNotDestroyedOrNull() != null && isPresenceModelActivitySet() && getLc().getPresenceModel().getActivity().getType() != PresenceActivityType.Online) { LinphoneCore lc = getLcIfManagerNotDestroyedOrNull();
getLc().getPresenceModel().getActivity().setType(PresenceActivityType.Online); if (isInstanciated() && lc != null && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.Online) {
} else if (isInstanciated() && getLcIfManagerNotDestroyedOrNull() != null && !isPresenceModelActivitySet()) { lc.getPresenceModel().getActivity().setType(PresenceActivityType.Online);
} else if (isInstanciated() && lc != null && !isPresenceModelActivitySet()) {
PresenceModel model = LinphoneCoreFactoryImpl.instance().createPresenceModel(PresenceActivityType.Online, null); PresenceModel model = LinphoneCoreFactoryImpl.instance().createPresenceModel(PresenceActivityType.Online, null);
getLc().setPresenceModel(model); lc.setPresenceModel(model);
} }
} }
public void changeStatusToOnThePhone() { public void changeStatusToOnThePhone() {
if (isInstanciated() && isPresenceModelActivitySet() && getLc().getPresenceModel().getActivity().getType() != PresenceActivityType.OnThePhone) { LinphoneCore lc = getLcIfManagerNotDestroyedOrNull();
getLc().getPresenceModel().getActivity().setType(PresenceActivityType.OnThePhone); if (isInstanciated() && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.OnThePhone) {
lc.getPresenceModel().getActivity().setType(PresenceActivityType.OnThePhone);
} else if (isInstanciated() && !isPresenceModelActivitySet()) { } else if (isInstanciated() && !isPresenceModelActivitySet()) {
PresenceModel model = LinphoneCoreFactoryImpl.instance().createPresenceModel(PresenceActivityType.OnThePhone, null); PresenceModel model = LinphoneCoreFactoryImpl.instance().createPresenceModel(PresenceActivityType.OnThePhone, null);
getLc().setPresenceModel(model); lc.setPresenceModel(model);
} }
} }
public void changeStatusToOffline() { public void changeStatusToOffline() {
if (isInstanciated() && isPresenceModelActivitySet() && getLc().getPresenceModel().getActivity().getType() != PresenceActivityType.Offline) { LinphoneCore lc = getLcIfManagerNotDestroyedOrNull();
getLc().getPresenceModel().getActivity().setType(PresenceActivityType.Offline); if (isInstanciated() && isPresenceModelActivitySet() && lc.getPresenceModel().getActivity().getType() != PresenceActivityType.Offline) {
lc.getPresenceModel().getActivity().setType(PresenceActivityType.Offline);
} else if (isInstanciated() && !isPresenceModelActivitySet()) { } else if (isInstanciated() && !isPresenceModelActivitySet()) {
PresenceModel model = LinphoneCoreFactoryImpl.instance().createPresenceModel(PresenceActivityType.Offline, null); PresenceModel model = LinphoneCoreFactoryImpl.instance().createPresenceModel(PresenceActivityType.Offline, null);
getLc().setPresenceModel(model); lc.setPresenceModel(model);
} }
} }

View file

@ -20,6 +20,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.ACTION_MAIN;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import org.linphone.LinphoneActivity; import org.linphone.LinphoneActivity;
import org.linphone.LinphoneLauncherActivity; import org.linphone.LinphoneLauncherActivity;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
@ -108,6 +111,11 @@ public class RemoteProvisioningActivity extends Activity implements LinphoneRemo
if (openUri != null) { if (openUri != null) {
// We expect something like linphone-config://http://linphone.org/config.xml // We expect something like linphone-config://http://linphone.org/config.xml
configUriParam = openUri.getEncodedSchemeSpecificPart().substring(2); // Removes the linphone-config:// configUriParam = openUri.getEncodedSchemeSpecificPart().substring(2); // Removes the linphone-config://
try {
configUriParam = URLDecoder.decode(configUriParam, "UTF-8");
} catch (UnsupportedEncodingException e) {
Log.e(e);
}
Log.d("Using config uri: " + configUriParam); Log.d("Using config uri: " + configUriParam);
} }