使用adb shell命令接收推送通知

Din*_*voo 6 android adb

我正在尝试使用以下adb shell命令在我的设备上接收推送通知:

adb shell am broadcast -c com.xxxx.android -a com.google.android.c2dm.intent.RECEIVE -e data "Data"
Run Code Online (Sandbox Code Playgroud)

但我没有收到任何推送消息或错误.

这是我得到的输出:

Intent { act=com.google.android.c2dm.intent.RECEIVE cat=[com.myapp] (has extras) } Broadcast completed: result=0
Run Code Online (Sandbox Code Playgroud)

Jin*_* Li 12

以下是adb broadcast命令的基本用法:

adb shell am broadcast
-a <INTENT_NAME>
-n <PACKAGE_NAME>/<RECEIVER_NAME>
[--ei <EXTRA_KEY> <EXTRA_INT_VALUE>]
[--es <EXTRA_KEY> <EXTRA_STRING_VALUE>]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>]
[--el <EXTRA_KEY> <EXTRA_LONG_VALUE>]
[--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>]
[--eu <EXTRA_KEY> <EXTRA_URI_VALUE>]
[--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]
[--e*a <EXTRA_KEY> <EXTRA_*_VALUE>[,<EXTRA_*_VALUE...]]
Run Code Online (Sandbox Code Playgroud)

您可以在AndroidManifest.xml中找到RECEIVER_NAME:

<receiver
    android:name="foo.bar.SomeBroadcastReceiver"
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <category android:name="xyz.abc" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

示例命令:

adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE -n <YOUR_PACKAGE_NAME>/<YOUR_RECEIVER_NAME> --es "<EXTRA_KEY>" "<EXTRA_VALUE>"
Run Code Online (Sandbox Code Playgroud)

  • 删除android:permission ="com.google.android.c2dm.permission.SEND"进行测试.在那里有那个参数,声明我们只希望来自具有SEND权限的活动的消息 - 命令行工具没有. (3认同)