4

我有一部 Android(7) 手机和一台 Linux 电脑。通过启用 USB 调试并使用我的电脑终端,我可以使用以下命令读取手机的通知: adb shell dumpsys notification --noredact

现在,在 android 中有一些通知,我们可以直接从通知中与应用程序进行交互。例如,在 Whatsapp 通知中,通常有两个按钮:回复标记为已读。在 YouTube 中,有播放关闭稍后观看等选项。在上述命令的输出中,这些选项以下列形式显示:

actions={
        [0] "Reply" -> PendingIntent{6becf48: PendingIntentRecord{87b8050 com.whatsapp startService (whitelist: +30s0ms)}}
        [1] "Mark as read" -> PendingIntent{c1661e1: PendingIntentRecord{b8e3249 com.whatsapp startService (whitelist: +30s0ms)}}
      }

我有两个问题:

  1. 我们可以从 adb shell 与这些选项进行交互吗?例如,是否有任何命令adb shell <SOME COMMAND> 'Message to be sent in whatsapp with reply option'可以在不打开应用程序的情况下在 whatsapp 中将文本作为回复发送?

  2. 是否可以使用任何 adb 命令滑动通知?(不是adb shell input swipe x0 y0 x1 y1,每次都需要解锁手机)

先感谢您!

编辑:

这是我发现的可能与这个问题有关的内容。

我认为我必须以某种方式启动与提到的 PendingIntent id 相关联的特定意图(在这种情况下6becf4887b8050

使用命令adb shell dumpsys activity intents > output.txt然后搜索87b8050in output.txt,我找到了意图的名称。情况如下:

  * PendingIntentRecord{87b8050 com.whatsapp startService (whitelist: +30s0ms)}
    uid=10104 packageName=com.whatsapp type=startService flags=0x0
    requestIntent=act=com.whatsapp.intent.action.DIRECT_REPLY_FROM_MESSAGE dat=content://com.whatsapp.provider.contact/contacts/2256 cmp=com.whatsapp/.notification.DirectReplyService (has extras)
    whitelistDuration=+30s0ms

现在我认为可以com.whatsapp.intent.action.DIRECT_REPLY_FROM_MESSAGE使用adb shell am命令启动意图,并将意图 id 和消息作为一些参数传递。

(就像我们可以使用am命令从 adb 启动 Whatsapp 一样,也应该可以启动 pendingIntent。)

4

1 回答 1

1

无法从非根 ADB 访问未导出的组件。

理论上,您可以运行此代码来执行“回复”操作:

adb shell am startservice --user 10104  \
  -a "com.whatsapp.intent.action.DIRECT_REPLY_FROM_MESSAGE" \
  -d "content://com.whatsapp.provider.contact/contacts/2256" \
  -n "com.whatsapp/.notification.DirectReplyService" \
  --es extra_key extra_string_value
  com.whatsapp

--user- 用户 uid,
-a- 操作来自requestIntent.act
-d- data_uri 来自requestIntent.dat
-n- 组件来自requestIntent.cmp
--es EXTRA_KEY extra_string_value- 额外的键/值,应用程序应该接受。它是可选的,并在应用程序中定义,实际上此操作接受额外的键,请参阅(has extras),它取决于应用程序并且可能在应用程序文档中

意图文档、命令、参数和选项

Whatsapp Android 意图系统

于 2020-12-06T19:42:56.153 回答