Trying to fix actions in notification not working
This commit is contained in:
parent
2adca8f90f
commit
68ac6ca680
8 changed files with 67 additions and 12 deletions
|
@ -23,6 +23,7 @@ import static org.linphone.compatibility.Compatibility.CHAT_NOTIFICATIONS_GROUP;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_LOCAL_IDENTITY;
|
import static org.linphone.compatibility.Compatibility.INTENT_LOCAL_IDENTITY;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_MARK_AS_READ_ACTION;
|
import static org.linphone.compatibility.Compatibility.INTENT_MARK_AS_READ_ACTION;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_NOTIF_ID;
|
import static org.linphone.compatibility.Compatibility.INTENT_NOTIF_ID;
|
||||||
|
import static org.linphone.compatibility.Compatibility.INTENT_REMOTE_IDENTITY;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_REPLY_NOTIF_ACTION;
|
import static org.linphone.compatibility.Compatibility.INTENT_REPLY_NOTIF_ACTION;
|
||||||
import static org.linphone.compatibility.Compatibility.KEY_TEXT_REPLY;
|
import static org.linphone.compatibility.Compatibility.KEY_TEXT_REPLY;
|
||||||
|
|
||||||
|
@ -132,6 +133,7 @@ class ApiTwentyEightPlus {
|
||||||
replyIntent.setAction(INTENT_REPLY_NOTIF_ACTION);
|
replyIntent.setAction(INTENT_REPLY_NOTIF_ACTION);
|
||||||
replyIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
replyIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
||||||
replyIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
replyIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
||||||
|
replyIntent.putExtra(INTENT_REMOTE_IDENTITY, notif.getRemoteIdentity());
|
||||||
|
|
||||||
PendingIntent replyPendingIntent =
|
PendingIntent replyPendingIntent =
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
|
@ -156,6 +158,7 @@ class ApiTwentyEightPlus {
|
||||||
markAsReadIntent.setAction(INTENT_MARK_AS_READ_ACTION);
|
markAsReadIntent.setAction(INTENT_MARK_AS_READ_ACTION);
|
||||||
markAsReadIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
markAsReadIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
||||||
markAsReadIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
markAsReadIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
||||||
|
markAsReadIntent.putExtra(INTENT_REMOTE_IDENTITY, notif.getRemoteIdentity());
|
||||||
|
|
||||||
PendingIntent markAsReadPendingIntent =
|
PendingIntent markAsReadPendingIntent =
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
|
|
|
@ -25,6 +25,7 @@ import static org.linphone.compatibility.Compatibility.INTENT_HANGUP_CALL_NOTIF_
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_LOCAL_IDENTITY;
|
import static org.linphone.compatibility.Compatibility.INTENT_LOCAL_IDENTITY;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_MARK_AS_READ_ACTION;
|
import static org.linphone.compatibility.Compatibility.INTENT_MARK_AS_READ_ACTION;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_NOTIF_ID;
|
import static org.linphone.compatibility.Compatibility.INTENT_NOTIF_ID;
|
||||||
|
import static org.linphone.compatibility.Compatibility.INTENT_REMOTE_IDENTITY;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_REPLY_NOTIF_ACTION;
|
import static org.linphone.compatibility.Compatibility.INTENT_REPLY_NOTIF_ACTION;
|
||||||
import static org.linphone.compatibility.Compatibility.KEY_TEXT_REPLY;
|
import static org.linphone.compatibility.Compatibility.KEY_TEXT_REPLY;
|
||||||
|
|
||||||
|
@ -167,6 +168,7 @@ class ApiTwentyFourPlus {
|
||||||
replyIntent.setAction(INTENT_REPLY_NOTIF_ACTION);
|
replyIntent.setAction(INTENT_REPLY_NOTIF_ACTION);
|
||||||
replyIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
replyIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
||||||
replyIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
replyIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
||||||
|
replyIntent.putExtra(INTENT_REMOTE_IDENTITY, notif.getRemoteIdentity());
|
||||||
|
|
||||||
PendingIntent replyPendingIntent =
|
PendingIntent replyPendingIntent =
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
|
@ -190,6 +192,7 @@ class ApiTwentyFourPlus {
|
||||||
markAsReadIntent.setAction(INTENT_MARK_AS_READ_ACTION);
|
markAsReadIntent.setAction(INTENT_MARK_AS_READ_ACTION);
|
||||||
markAsReadIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
markAsReadIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
||||||
markAsReadIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
markAsReadIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
||||||
|
markAsReadIntent.putExtra(INTENT_REMOTE_IDENTITY, notif.getRemoteIdentity());
|
||||||
|
|
||||||
PendingIntent markAsReadPendingIntent =
|
PendingIntent markAsReadPendingIntent =
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
|
|
|
@ -24,6 +24,7 @@ import static org.linphone.compatibility.Compatibility.INTENT_HANGUP_CALL_NOTIF_
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_LOCAL_IDENTITY;
|
import static org.linphone.compatibility.Compatibility.INTENT_LOCAL_IDENTITY;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_MARK_AS_READ_ACTION;
|
import static org.linphone.compatibility.Compatibility.INTENT_MARK_AS_READ_ACTION;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_NOTIF_ID;
|
import static org.linphone.compatibility.Compatibility.INTENT_NOTIF_ID;
|
||||||
|
import static org.linphone.compatibility.Compatibility.INTENT_REMOTE_IDENTITY;
|
||||||
import static org.linphone.compatibility.Compatibility.INTENT_REPLY_NOTIF_ACTION;
|
import static org.linphone.compatibility.Compatibility.INTENT_REPLY_NOTIF_ACTION;
|
||||||
import static org.linphone.compatibility.Compatibility.KEY_TEXT_REPLY;
|
import static org.linphone.compatibility.Compatibility.KEY_TEXT_REPLY;
|
||||||
|
|
||||||
|
@ -48,6 +49,7 @@ public class ApiTwentyNinePlus {
|
||||||
replyIntent.setAction(INTENT_REPLY_NOTIF_ACTION);
|
replyIntent.setAction(INTENT_REPLY_NOTIF_ACTION);
|
||||||
replyIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
replyIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
||||||
replyIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
replyIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
||||||
|
replyIntent.putExtra(INTENT_REMOTE_IDENTITY, notif.getRemoteIdentity());
|
||||||
|
|
||||||
PendingIntent replyPendingIntent =
|
PendingIntent replyPendingIntent =
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
|
@ -72,6 +74,7 @@ public class ApiTwentyNinePlus {
|
||||||
markAsReadIntent.setAction(INTENT_MARK_AS_READ_ACTION);
|
markAsReadIntent.setAction(INTENT_MARK_AS_READ_ACTION);
|
||||||
markAsReadIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
markAsReadIntent.putExtra(INTENT_NOTIF_ID, notif.getNotificationId());
|
||||||
markAsReadIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
markAsReadIntent.putExtra(INTENT_LOCAL_IDENTITY, notif.getLocalIdentity());
|
||||||
|
markAsReadIntent.putExtra(INTENT_REMOTE_IDENTITY, notif.getRemoteIdentity());
|
||||||
|
|
||||||
PendingIntent markAsReadPendingIntent =
|
PendingIntent markAsReadPendingIntent =
|
||||||
PendingIntent.getBroadcast(
|
PendingIntent.getBroadcast(
|
||||||
|
|
|
@ -45,6 +45,7 @@ public class Compatibility {
|
||||||
public static final String INTENT_HANGUP_CALL_NOTIF_ACTION = "org.linphone.HANGUP_CALL_ACTION";
|
public static final String INTENT_HANGUP_CALL_NOTIF_ACTION = "org.linphone.HANGUP_CALL_ACTION";
|
||||||
public static final String INTENT_ANSWER_CALL_NOTIF_ACTION = "org.linphone.ANSWER_CALL_ACTION";
|
public static final String INTENT_ANSWER_CALL_NOTIF_ACTION = "org.linphone.ANSWER_CALL_ACTION";
|
||||||
public static final String INTENT_LOCAL_IDENTITY = "LOCAL_IDENTITY";
|
public static final String INTENT_LOCAL_IDENTITY = "LOCAL_IDENTITY";
|
||||||
|
public static final String INTENT_REMOTE_IDENTITY = "REMOTE_IDENTITY";
|
||||||
public static final String INTENT_MARK_AS_READ_ACTION = "org.linphone.MARK_AS_READ_ACTION";
|
public static final String INTENT_MARK_AS_READ_ACTION = "org.linphone.MARK_AS_READ_ACTION";
|
||||||
|
|
||||||
public static String getDeviceName(Context context) {
|
public static String getDeviceName(Context context) {
|
||||||
|
|
|
@ -28,6 +28,7 @@ public class Notifiable {
|
||||||
private boolean mIsGroup;
|
private boolean mIsGroup;
|
||||||
private String mGroupTitle;
|
private String mGroupTitle;
|
||||||
private String mLocalIdentity;
|
private String mLocalIdentity;
|
||||||
|
private String mRemoteIdentity;
|
||||||
private String mMyself;
|
private String mMyself;
|
||||||
private int mIconId;
|
private int mIconId;
|
||||||
private int mTextId;
|
private int mTextId;
|
||||||
|
@ -84,10 +85,18 @@ public class Notifiable {
|
||||||
return mLocalIdentity;
|
return mLocalIdentity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRemoteIdentity() {
|
||||||
|
return mRemoteIdentity;
|
||||||
|
}
|
||||||
|
|
||||||
public void setLocalIdentity(String localIdentity) {
|
public void setLocalIdentity(String localIdentity) {
|
||||||
mLocalIdentity = localIdentity;
|
mLocalIdentity = localIdentity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRemoteIdentity(String remoteIdentity) {
|
||||||
|
mRemoteIdentity = remoteIdentity;
|
||||||
|
}
|
||||||
|
|
||||||
public int getIconResourceId() {
|
public int getIconResourceId() {
|
||||||
return mIconId;
|
return mIconId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,10 @@
|
||||||
*/
|
*/
|
||||||
package org.linphone.notifications;
|
package org.linphone.notifications;
|
||||||
|
|
||||||
|
import static android.content.Context.NOTIFICATION_SERVICE;
|
||||||
|
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
|
import android.app.NotificationManager;
|
||||||
import android.app.RemoteInput;
|
import android.app.RemoteInput;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -34,27 +37,40 @@ import org.linphone.core.Call;
|
||||||
import org.linphone.core.ChatMessage;
|
import org.linphone.core.ChatMessage;
|
||||||
import org.linphone.core.ChatRoom;
|
import org.linphone.core.ChatRoom;
|
||||||
import org.linphone.core.Core;
|
import org.linphone.core.Core;
|
||||||
|
import org.linphone.core.Factory;
|
||||||
import org.linphone.core.tools.Log;
|
import org.linphone.core.tools.Log;
|
||||||
|
import org.linphone.settings.LinphonePreferences;
|
||||||
|
|
||||||
public class NotificationBroadcastReceiver extends BroadcastReceiver {
|
public class NotificationBroadcastReceiver extends BroadcastReceiver {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(final Context context, Intent intent) {
|
public void onReceive(final Context context, Intent intent) {
|
||||||
final int notifId = intent.getIntExtra(Compatibility.INTENT_NOTIF_ID, 0);
|
final int notifId = intent.getIntExtra(Compatibility.INTENT_NOTIF_ID, 0);
|
||||||
final String localyIdentity = intent.getStringExtra(Compatibility.INTENT_LOCAL_IDENTITY);
|
final String localyIdentity = intent.getStringExtra(Compatibility.INTENT_LOCAL_IDENTITY);
|
||||||
|
final String remoteIdentity = intent.getStringExtra(Compatibility.INTENT_REMOTE_IDENTITY);
|
||||||
|
|
||||||
if (!LinphoneContext.isReady()) {
|
if (!LinphoneContext.isReady()) {
|
||||||
Log.e("[Notification Broadcast Receiver] Context not ready, aborting...");
|
Log.e("[Notification Broadcast Receiver] Context not ready...");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intent.getAction().equals(Compatibility.INTENT_REPLY_NOTIF_ACTION)
|
if (intent.getAction().equals(Compatibility.INTENT_REPLY_NOTIF_ACTION)
|
||||||
|| intent.getAction().equals(Compatibility.INTENT_MARK_AS_READ_ACTION)) {
|
|| intent.getAction().equals(Compatibility.INTENT_MARK_AS_READ_ACTION)) {
|
||||||
String remoteSipAddr =
|
String remoteSipAddr = remoteIdentity;
|
||||||
LinphoneContext.instance()
|
|
||||||
.getNotificationManager()
|
Core core;
|
||||||
.getSipUriForNotificationId(notifId);
|
boolean stopCoreWhenFinished = false;
|
||||||
|
if (!LinphoneContext.isReady()) {
|
||||||
|
String basePath = context.getFilesDir().getAbsolutePath();
|
||||||
|
core =
|
||||||
|
Factory.instance()
|
||||||
|
.createCore(
|
||||||
|
basePath + LinphonePreferences.LINPHONE_DEFAULT_RC,
|
||||||
|
basePath + LinphonePreferences.LINPHONE_FACTORY_RC,
|
||||||
|
context);
|
||||||
|
stopCoreWhenFinished = true;
|
||||||
|
Log.e("[Notification Broadcast Receiver] Created temporary Core");
|
||||||
|
core.start();
|
||||||
|
} else core = LinphoneManager.getCore();
|
||||||
|
|
||||||
Core core = LinphoneManager.getCore();
|
|
||||||
if (core == null) {
|
if (core == null) {
|
||||||
Log.e("[Notification Broadcast Receiver] Couldn't get Core instance");
|
Log.e("[Notification Broadcast Receiver] Couldn't get Core instance");
|
||||||
onError(context, notifId);
|
onError(context, notifId);
|
||||||
|
@ -102,15 +118,33 @@ public class NotificationBroadcastReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
ChatMessage msg = room.createMessage(reply);
|
ChatMessage msg = room.createMessage(reply);
|
||||||
msg.setUserData(notifId);
|
msg.setUserData(notifId);
|
||||||
msg.addListener(
|
if (!stopCoreWhenFinished) {
|
||||||
LinphoneContext.instance().getNotificationManager().getMessageListener());
|
msg.addListener(
|
||||||
|
LinphoneContext.instance()
|
||||||
|
.getNotificationManager()
|
||||||
|
.getMessageListener());
|
||||||
|
}
|
||||||
msg.send();
|
msg.send();
|
||||||
Log.i("[Notification Broadcast Receiver] Reply sent for notif id " + notifId);
|
Log.i("[Notification Broadcast Receiver] Reply sent for notif id " + notifId);
|
||||||
} else {
|
} else {
|
||||||
LinphoneContext.instance().getNotificationManager().dismissNotification(notifId);
|
if (!stopCoreWhenFinished) {
|
||||||
|
LinphoneContext.instance()
|
||||||
|
.getNotificationManager()
|
||||||
|
.dismissNotification(notifId);
|
||||||
|
} else {
|
||||||
|
NotificationManager notificationManager =
|
||||||
|
(NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
|
||||||
|
notificationManager.cancel(notifId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stopCoreWhenFinished) {
|
||||||
|
core.stopAsync();
|
||||||
}
|
}
|
||||||
} else if (intent.getAction().equals(Compatibility.INTENT_ANSWER_CALL_NOTIF_ACTION)
|
} else if (intent.getAction().equals(Compatibility.INTENT_ANSWER_CALL_NOTIF_ACTION)
|
||||||
|| intent.getAction().equals(Compatibility.INTENT_HANGUP_CALL_NOTIF_ACTION)) {
|
|| intent.getAction().equals(Compatibility.INTENT_HANGUP_CALL_NOTIF_ACTION)) {
|
||||||
|
if (!LinphoneContext.isReady()) return;
|
||||||
|
|
||||||
String remoteAddr =
|
String remoteAddr =
|
||||||
LinphoneContext.instance()
|
LinphoneContext.instance()
|
||||||
.getNotificationManager()
|
.getNotificationManager()
|
||||||
|
|
|
@ -462,6 +462,7 @@ public class NotificationsManager {
|
||||||
notif.setGroupTitle(subject);
|
notif.setGroupTitle(subject);
|
||||||
notif.setMyself(LinphoneUtils.getAddressDisplayName(localIdentity));
|
notif.setMyself(LinphoneUtils.getAddressDisplayName(localIdentity));
|
||||||
notif.setLocalIdentity(localIdentity.asString());
|
notif.setLocalIdentity(localIdentity.asString());
|
||||||
|
notif.setRemoteIdentity(conferenceAddress);
|
||||||
|
|
||||||
displayMessageNotificationFromNotifiable(
|
displayMessageNotificationFromNotifiable(
|
||||||
notif, conferenceAddress, localIdentity.asStringUriOnly());
|
notif, conferenceAddress, localIdentity.asStringUriOnly());
|
||||||
|
@ -496,6 +497,7 @@ public class NotificationsManager {
|
||||||
notif.setIsGroup(false);
|
notif.setIsGroup(false);
|
||||||
notif.setMyself(LinphoneUtils.getAddressDisplayName(localIdentity));
|
notif.setMyself(LinphoneUtils.getAddressDisplayName(localIdentity));
|
||||||
notif.setLocalIdentity(localIdentity.asString());
|
notif.setLocalIdentity(localIdentity.asString());
|
||||||
|
notif.setRemoteIdentity(fromSipUri);
|
||||||
|
|
||||||
displayMessageNotificationFromNotifiable(
|
displayMessageNotificationFromNotifiable(
|
||||||
notif, fromSipUri, localIdentity.asStringUriOnly());
|
notif, fromSipUri, localIdentity.asStringUriOnly());
|
||||||
|
|
|
@ -53,8 +53,8 @@ import org.linphone.utils.LinphoneUtils;
|
||||||
|
|
||||||
public class LinphonePreferences {
|
public class LinphonePreferences {
|
||||||
private static final int LINPHONE_CORE_RANDOM_PORT = -1;
|
private static final int LINPHONE_CORE_RANDOM_PORT = -1;
|
||||||
private static final String LINPHONE_DEFAULT_RC = "/.linphonerc";
|
public static final String LINPHONE_DEFAULT_RC = "/.linphonerc";
|
||||||
private static final String LINPHONE_FACTORY_RC = "/linphonerc";
|
public static final String LINPHONE_FACTORY_RC = "/linphonerc";
|
||||||
private static final String LINPHONE_LPCONFIG_XSD = "/lpconfig.xsd";
|
private static final String LINPHONE_LPCONFIG_XSD = "/lpconfig.xsd";
|
||||||
private static final String DEFAULT_ASSISTANT_RC = "/default_assistant_create.rc";
|
private static final String DEFAULT_ASSISTANT_RC = "/default_assistant_create.rc";
|
||||||
private static final String LINPHONE_ASSISTANT_RC = "/linphone_assistant_create.rc";
|
private static final String LINPHONE_ASSISTANT_RC = "/linphone_assistant_create.rc";
|
||||||
|
|
Loading…
Reference in a new issue