Improved & fixed issues related to intent filters

This commit is contained in:
Sylvain Berfini 2019-08-30 12:27:58 +02:00
parent 89b4ab1c78
commit 79043262dd
3 changed files with 31 additions and 1 deletions

View file

@ -57,6 +57,7 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
private boolean mIsTransfer; private boolean mIsTransfer;
private CoreListenerStub mListener; private CoreListenerStub mListener;
private boolean mInterfaceLoaded; private boolean mInterfaceLoaded;
private String mAddressToCallOnLayoutReady;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -84,6 +85,10 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
fragmentContainer.addView(view, params); fragmentContainer.addView(view, params);
initUI(view); initUI(view);
mInterfaceLoaded = true; mInterfaceLoaded = true;
if (mAddressToCallOnLayoutReady != null) {
mAddress.setText(mAddressToCallOnLayoutReady);
mAddressToCallOnLayoutReady = null;
}
} }
}); });
@ -318,7 +323,11 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
} }
if (addressToCall != null) { if (addressToCall != null) {
mAddress.setText(addressToCall); if (mAddress != null) {
mAddress.setText(addressToCall);
} else {
mAddressToCallOnLayoutReady = addressToCall;
}
} }
} }

View file

@ -28,6 +28,7 @@ import org.linphone.LinphoneService;
import org.linphone.R; import org.linphone.R;
import org.linphone.assistant.MenuAssistantActivity; import org.linphone.assistant.MenuAssistantActivity;
import org.linphone.chat.ChatActivity; import org.linphone.chat.ChatActivity;
import org.linphone.contacts.ContactsActivity;
import org.linphone.history.HistoryActivity; import org.linphone.history.HistoryActivity;
import org.linphone.settings.LinphonePreferences; import org.linphone.settings.LinphonePreferences;
import org.linphone.utils.LinphoneUtils; import org.linphone.utils.LinphoneUtils;
@ -74,6 +75,8 @@ public class LinphoneLauncherActivity extends Activity {
classToStart = ChatActivity.class; classToStart = ChatActivity.class;
} else if (HistoryActivity.NAME.equals(activity)) { } else if (HistoryActivity.NAME.equals(activity)) {
classToStart = HistoryActivity.class; classToStart = HistoryActivity.class;
} else if (ContactsActivity.NAME.equals(activity)) {
classToStart = ContactsActivity.class;
} else { } else {
classToStart = DialerActivity.class; classToStart = DialerActivity.class;
} }
@ -97,6 +100,7 @@ public class LinphoneLauncherActivity extends Activity {
} }
intent.setAction(getIntent().getAction()); intent.setAction(getIntent().getAction());
intent.setType(getIntent().getType()); intent.setType(getIntent().getType());
intent.setData(getIntent().getData());
startActivity(intent); startActivity(intent);
} }
}, },

View file

@ -28,13 +28,17 @@ import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import org.linphone.R; import org.linphone.R;
import org.linphone.activities.MainActivity; import org.linphone.activities.MainActivity;
import org.linphone.core.tools.Log;
public class ContactsActivity extends MainActivity { public class ContactsActivity extends MainActivity {
public static final String NAME = "Contacts";
private boolean mEditOnClick; private boolean mEditOnClick;
private String mEditSipUri, mEditDisplayName; private String mEditSipUri, mEditDisplayName;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
getIntent().putExtra("Activity", NAME);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mPermissionsToHave = mPermissionsToHave =
@ -53,6 +57,10 @@ public class ContactsActivity extends MainActivity {
if (getIntent() != null && getIntent().getExtras() != null) { if (getIntent() != null && getIntent().getExtras() != null) {
Bundle extras = getIntent().getExtras(); Bundle extras = getIntent().getExtras();
Uri uri = getIntent().getData();
if (uri != null) {
extras.putString("ContactUri", uri.toString());
}
handleIntentExtras(extras); handleIntentExtras(extras);
} else if (getIntent() != null && getIntent().getData() != null) { } else if (getIntent() != null && getIntent().getData() != null) {
Uri uri = getIntent().getData(); Uri uri = getIntent().getData();
@ -132,6 +140,7 @@ public class ContactsActivity extends MainActivity {
if (extras.containsKey("ContactUri")) { if (extras.containsKey("ContactUri")) {
String uri = extras.getString("ContactUri"); String uri = extras.getString("ContactUri");
Log.i("[Contacts Activity] Found ContactUri " + uri);
Uri contactUri = Uri.parse(uri); Uri contactUri = Uri.parse(uri);
String id = ContactsManager.getInstance().getAndroidContactIdFromUri(contactUri); String id = ContactsManager.getInstance().getAndroidContactIdFromUri(contactUri);
@ -142,6 +151,7 @@ public class ContactsActivity extends MainActivity {
} }
} else if (extras.containsKey("Contact")) { } else if (extras.containsKey("Contact")) {
LinphoneContact contact = (LinphoneContact) extras.get("Contact"); LinphoneContact contact = (LinphoneContact) extras.get("Contact");
Log.i("[Contacts Activity] Found Contact " + contact);
if (extras.containsKey("Edit")) { if (extras.containsKey("Edit")) {
showContactEdit(contact, extras, true); showContactEdit(contact, extras, true);
} else { } else {
@ -151,6 +161,11 @@ public class ContactsActivity extends MainActivity {
mEditOnClick = extras.getBoolean("CreateOrEdit"); mEditOnClick = extras.getBoolean("CreateOrEdit");
mEditSipUri = extras.getString("SipUri", null); mEditSipUri = extras.getString("SipUri", null);
mEditDisplayName = extras.getString("DisplayName", null); mEditDisplayName = extras.getString("DisplayName", null);
Log.i(
"[Contacts Activity] CreateOrEdit with values "
+ mEditSipUri
+ " / "
+ mEditDisplayName);
Toast.makeText(this, R.string.toast_choose_contact_for_edition, Toast.LENGTH_LONG) Toast.makeText(this, R.string.toast_choose_contact_for_edition, Toast.LENGTH_LONG)
.show(); .show();
@ -179,6 +194,7 @@ public class ContactsActivity extends MainActivity {
Bundle extras = new Bundle(); Bundle extras = new Bundle();
if (contact != null) { if (contact != null) {
extras.putSerializable("Contact", contact); extras.putSerializable("Contact", contact);
Log.i("[Contacts Activity] Displaying Contact " + contact);
} }
ContactDetailsFragment fragment = new ContactDetailsFragment(); ContactDetailsFragment fragment = new ContactDetailsFragment();
@ -193,6 +209,7 @@ public class ContactsActivity extends MainActivity {
private void showContactEdit(LinphoneContact contact, Bundle extras, boolean isChild) { private void showContactEdit(LinphoneContact contact, Bundle extras, boolean isChild) {
if (contact != null) { if (contact != null) {
extras.putSerializable("Contact", contact); extras.putSerializable("Contact", contact);
Log.i("[Contacts Activity] Editing Contact " + contact);
} }
if (mEditOnClick) { if (mEditOnClick) {
mEditOnClick = false; mEditOnClick = false;