我的应用程序正在使用notificationlistener
读取来自各种第三方应用程序的消息,例如WhatsApp。
到目前为止,我能够发送一个回复,如果只有一个聊天未读,代码如下。
但是,在WhatsApp的情况下,getNotification().actions
会在两个以上聊天未读时返回一个空对象,因为消息绑定在一起。正如你在下面的图片中所看到的,如果通知被延长,也有一个选择发送一个直接回复,因此我确信这是可以利用的,而且我认为像PushBullet这样的应用程序正在使用这种方法。
我如何访问该通知的RemoteInput?
public static ReplyIntentSender sendReply(StatusBarNotification statusBarNotification, String name) {
Notification.Action actions[] = statusBarNotification.getNotification().actions;
for (Notification.Action act : actions) {
if (act != null && act.getRemoteInputs() != null) {
if (act.title.toString().contains(name)) {
if (act.getRemoteInputs() != null)
return new ReplyIntentSender(act);
}
}
}
return null;
}
public static class ReplyIntentSender {
[...]
public final Notification.Action action;
public ReplyIntentSender(Notification.Action extractedAction) {
action = extractedAction;
[...]
}
private boolean sendNativeIntent(Context context, String message) {
for (android.app.RemoteInput rem : action.getRemoteInputs()) {
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putCharSequence(rem.getResultKey(), message);
android.app.RemoteInput.addResultsToIntent(action.getRemoteInputs(), intent, bundle);
try {
action.actionIntent.send(context, 0, intent);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
return false;
}
}
上面的代码是如何工作的:收到通知后,应用程序尝试获取操作并检查名称是否在remoteInput的标题中(通常是“Reply to$name”的格式),如果找到了,则将操作保存到ReplyIntentSender类中,该类由SendNativeIntent
触发时,循环遍历该操作的所有remoteInput并将消息添加到意图中。如果多个聊天未读,getNotification().actions
返回NULL。
下面是两个截图,第一个是它工作没有任何问题,第二个是它没有。
你可以把这当作我的建议。我对此做了一些研究,得出了以下结论(看起来你对此做了大量的研究,所以可能你知道我下面写的内容)
许多应用程序会发送特定的Wear通知,其中许多都包含可以从Android Wear设备访问的操作。我们可以在设备上抓取这些磨损通知,提取动作,找到回复动作(如果存在的话),用我们自己的响应填充它,然后执行pendingintent
,它将我们的响应发送回原始应用程序,以便发送给收件人。
为此,您可以参考这个链接(Rob J提供的一个很好的解决方法)。您还可以在此上下文中引用此链接(MichaLawTajchert完成的伟大研究工作)。(您可能需要使用notificationcompat.isgroupsummary
)
这就是我的感觉(也许我完全错了)
.actions
方法返回addAction(int、CharSequence、PendingIntent)附加到当前通知的所有notification.action结构的数组,此处不推荐使用addAction方法,因此它可能无法按预期工作。
我不能测试这在我的结束,否则我将爱提供一个工作的解决方案与代码。
例外 片段点击:- 在活动中, 详细活动清单, 图像加载使用毕加索, 模型类 从活动到片段的数据流, 我尝试过的解决方案 注意:-应用程序崩溃只在NOUGAT 最后,我实现了修复 将targetSdkVersion从25更改为23 更改后,我的应用程序在牛轧糖也不会崩溃。 我所要知道的就是这个合适的解决方案,或者有什么变通办法。 请引导到正确的方式。 提前谢谢。 碎片 选项卡布局 列表视图
在清单文件中:
我尝试了太多的选项/博客/脚本来安装GooglePlay for Emulator(通过Android Studio运行),但都没有成功。我看到了很多不同的错误 失败[安装失败\u更新不兼容] 评论-为什么在Emulator上安装GooglePlay如此困难,有人能提供与Marshmallow/Noughat一起使用的步骤或GAPP吗。或者为什么谷歌不提供标准步骤来为模拟器安装GApps! 以下是
我的应用程序在之前的Android版本上运行完美,在实际设备上从4.0测试到6.0.1。工作室仿真牛轧糖7.0和7.1没问题。然而,当我让我的朋友在他运行7.0的设备上测试APK时,这在几秒钟内就发生了: 崩溃通知 我没有访问该设备的权限(他住得很远),并且我无法在网上找到该特定错误的任何相关信息。原因可能是什么?
根据我们的客户需求,我们希望在所有Android操作系统版本的DatePickerDialog上保持全息样式,比如:Android 7上的DatePicker- 但在Android 7上似乎不能正常工作: Android 7上的DatePicker