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 CoreListenerStub mListener;
private boolean mInterfaceLoaded;
private String mAddressToCallOnLayoutReady;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -84,6 +85,10 @@ public class DialerActivity extends MainActivity implements AddressText.AddressC
fragmentContainer.addView(view, params);
initUI(view);
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) {
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.assistant.MenuAssistantActivity;
import org.linphone.chat.ChatActivity;
import org.linphone.contacts.ContactsActivity;
import org.linphone.history.HistoryActivity;
import org.linphone.settings.LinphonePreferences;
import org.linphone.utils.LinphoneUtils;
@ -74,6 +75,8 @@ public class LinphoneLauncherActivity extends Activity {
classToStart = ChatActivity.class;
} else if (HistoryActivity.NAME.equals(activity)) {
classToStart = HistoryActivity.class;
} else if (ContactsActivity.NAME.equals(activity)) {
classToStart = ContactsActivity.class;
} else {
classToStart = DialerActivity.class;
}
@ -97,6 +100,7 @@ public class LinphoneLauncherActivity extends Activity {
}
intent.setAction(getIntent().getAction());
intent.setType(getIntent().getType());
intent.setData(getIntent().getData());
startActivity(intent);
}
},

View file

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