我正在为WhatsApp构建一个聊天机器人,并使用notificationListenerService获取通知。到目前为止,一切都在Android9中运行良好,我能够发送通知,也能够识别通知是否来自群组对话。但当我尝试使用Android6时,我无法识别该通知是否来自群组对话。这对我很重要,因为我不想回复群组对话。这是我使用的代码
public void onNotificationPosted(StatusBarNotification sbn) {
Log.w(TAG, "onNotificationPosted: ");
if(!sbn.getPackageName().equals(WHATSAPP_PKG) || sbn.isOngoing()) return;
Notification notification = sbn.getNotification();
if (notification != null) {
Bundle bundle = notification.extras;
Log.d(TAG, "onNotificationPosted: Print Keys");
for(String k : bundle.keySet()) {
Log.d(TAG, "KEY : " + k + " -> " + bundle.get(k));
}
ArrayList<RemoteInput> remoteInputs = getRemoteInputs(notification);
Object isGroupConversation = bundle.get(NotificationCompat.EXTRA_IS_GROUP_CONVERSATION);
Object hiddenConversationTitle = bundle.get(NotificationCompat.EXTRA_HIDDEN_CONVERSATION_TITLE);
String conversationTitle = bundle.getString("android.conversationTitle");
Log.d(TAG, "onNotificationPosted: isGP " + isGroupConversation);//always null for API 23
Log.d(TAG, "onNotificationPosted: hideCovTitle " + hiddenConversationTitle);//always null for API 23
Log.d(TAG, "onNotificationPosted: convoTitle " + conversationTitle); //always null for API 23
if (isGroupConversation != null) {
boolean isGroup = (((boolean) isGroupConversation) && (conversationTitle != null));//Group Params
Log.d(TAG, "isGroupConversation: " + isGroup);//This is working fine in android 9 but not in Android 6
}else{
Log.e(TAG, "is GroupConversation : NULL ");
}
String title = bundle.getString(NotificationCompat.EXTRA_TITLE);
Object msz = bundle.get(NotificationCompat.EXTRA_TEXT);
if(msz != null && title != null){
if(msz.equals("Hi")) {
Log.d(TAG, "onNotificationPosted: msz HI");
if (!remoteInputs.isEmpty()){
Log.d(TAG, "onNotificationPosted: remote inputs " + remoteInputs.toString());
sendMessage(notification,"Hey there!!", bundle, remoteInputs);
}
}
}
}
}
在两个设备上打印完密钥后,我将在android 6中获得bundle.get(notificationcompat.extra_is_group_conversation)
的null值,但在android 9中没有。现在我想知道如何识别通知是否来自群组对话。这是Android6的按键记录
onNotificationPosted: Print Keys
KEY : android.title -> temp
KEY : android.subText -> null
KEY : android.template -> android.app.Notification$BigTextStyle
KEY : android.showChronometer -> false
KEY : android.icon -> 2131231578
KEY : android.text -> vijat: hi
KEY : android.progress -> 0
KEY : android.progressMax -> 0
KEY : android.showWhen -> true
KEY : android.rebuild.applicationInfo ->ApplicationInfo {1aaef78 com.whatsapp}
KEY : android.people -> [Ljava.lang.String;@98eb651
KEY : android.largeIcon -> android.graphics.Bitmap@f67eb6
KEY : android.bigText -> name: hi
KEY : android.infoText -> null
KEY : android.wearable.EXTENSIONS -> Bundle[mParcelledData.dataSize=936]
KEY : android.originatingUserId -> 0
KEY : android.progressIndeterminate -> false
KEY : android.summaryText -> 1 new message
问题内容: 我正在使用nodejs和expressjs。我想知道clientRequest对象中是否有类似的东西。我想为Web链接构建baseUrl。因此,如果请求是通过https完成的,我想在所有链接中保留https。 问题答案: 编辑: 对于Express,它更安全,建议使用(如@Andy在下面建议)。尽管它使用类似的实现,但将来可以安全使用,并且还可以选择支持标头。 话虽如此,对于您的用例而
首先,一些定义,以确保我使用的术语是清楚的: > 强实体和弱实体以及强/识别和弱/非识别关系:在ERD中,弱/非识别关系是连接两个强实体的关系,并用虚线表示。强/标识关系是将强实体连接到弱实体(即包含其相关实体的主键[PK]作为其自身组件的实体)的关系 <罢工> 组件 主键),并由实线指示。 例如,考虑一下这张图(从另一篇文章中借来): 课程(强实体)和类(弱实体)之间的关系是强关系(实线),因为
我知道在我发送请求并期望响应的情况下,或者在IP链接了域的情况下,IP地址会更有效,而不是域作为服务器的ID。但是,我的手机没有链接的域名和IP可以很容易地改变。 那个“ID”是什么,使Google的服务器能够将通知发送给我?
问题内容: 我有一个小字节数组(小于25K),可以作为较大的邮件信封的一部分进行接收和解码。有时,这是图像,而且是JPG。除字节数组外,我没有其他上下文信息,并且需要标识这是否是图像以及图像是否为JPG类型。 是否有一些魔术数字或魔术字节存在于开头,结尾或某个偏移量处,我可以查看它们以识别它? 我的代码示例如下(从内存而不是c / p): 我真的需要什么会 方法,甚至指向详细说明它的规范的指针。我
我知道这是一个古老的问题,可以在很多地方找到,但我仍然无法找到解决方案。 我想要的是,如果我使用手机的库存相机拍摄图像或从图库中选择图像,它应该告诉我图像的方向或确切的高度和宽度,以便我可以决定方向。 到目前为止,我使用stackoverflow尝试的是:- 但问题是,当使用相机捕获图像时,它分别给出6和1的纵向和横向。如果从图库中选择图像,它会给我0。所以我无法确定图像是风景还是肖像。 提前感谢
本文向大家介绍JavaScript中0、空字符串、'0'是true还是false的知识点分享,包括了JavaScript中0、空字符串、'0'是true还是false的知识点分享的使用技巧和注意事项,需要的朋友参考一下 最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下。 "" == false 结果是true