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

13

我希望在我的设备上接收推送通知,使用以下 adb shell 命令:

adb shell am broadcast -c com.xxxx.android -a com.google.android.c2dm.intent.RECEIVE -e data "Data"

但我没有接收到任何推送消息或错误提示。

这是我的输出结果:

Intent { act=com.google.android.c2dm.intent.RECEIVE cat=[com.myapp] (has extras) } Broadcast completed: result=0
2个回答

13

这里是 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...]]

你可以在你的 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>

示例命令:

adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE -n <YOUR_PACKAGE_NAME>/<YOUR_RECEIVER_NAME> --es "<EXTRA_KEY>" "<EXTRA_VALUE>"

4
为了测试,请删除android:permission="com.google.android.c2dm.permission.SEND"。有了这个参数,表示我们只想接收来自拥有SEND权限的活动发送的消息,而命令行工具没有该权限。请注意在翻译过程中不要改变原文意思,并尽可能让翻译通俗易懂。 - Ravi K. Sharma
1
我总是得到这个错误:java.lang.IllegalArgumentException: Bad component name: com.android.phone - Pixsa

1

你应该使用键-n而不是-c

键-c是类别键。

    [-c <CATEGORY> [-c <CATEGORY>] ...]

使用此命令,只需更改您的包名称:

 adb shell am broadcast -n com.myapp -a com.google.android.c2dm.intent.RECEIVE -e key "data"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接