android - 从 adb 向 BroadcastReceiver 发送 Intent

标签 android android-intent broadcastreceiver adb

我有 BroadcastReceiver 类:

public class IntentReceiver extends BroadcastReceiver {

    final String tag = "Intent Intercepter";

    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            String data = intent.getStringExtra("sms_body");
            Log.i(tag, data);
            Toast.makeText(context, data.subSequence(0, data.length()), Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Toast.makeText(context, "Intercepted", Toast.LENGTH_LONG).show();
        }
    }
}

而且在 list 中:

<receiver android:name="com.whereismywifeserver.IntentReceiver" android:enabled="true">
    <intent-filter android:priority="999">
        <action android:name="com.whereismywifeserver.intent.TEST"/>
    </intent-filter>
</receiver>

但是当我尝试从 adb 发送 Intent 时,我收到错误:

$ adb shell am start 
-a com.whereismywifeserver.intent.TEST
--es sms_body "test from adb" 
-c android.intent.category.HOME 
-n com.whereismywifeserver/.IntentReceiver
Starting: Intent { act=com.whereismywifeserver.intent.TEST t=[android.intent.category.HOME] cmp=com.whereismywifeserver/.IntentReceiver (has extras) }
Error type 3
Error: Activity class {com.whereismywifeserver/com.whereismywifeserver.IntentReceiver} does not exist.

当我在代码中创建 Intent 时,一切正常。那么如何从 adb 发送 Intent 呢?

最佳答案

您无需指定接收方。你可以用 adb 代替。

adb shell am broadcast -a com.whereismywifeserver.intent.TEST 
--es sms_body "test from adb"

有关更多参数,例如整数附加值,请参阅 documentation .

关于android - 从 adb 向 BroadcastReceiver 发送 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22634446/

相关文章:

android - android activity被打断怎么办?

android - 应用内广播接收器

android - ActivityRecognition API 一段时间后不发送 Action

android - 单击更改小部件可见性

android - 在 kotlin 中启用和禁用广播

android - 如何水平对齐菜单项

android - Gradle 'XXX' 项目刷新失败

android - ExtractMpegFramesTest 在 android 中以纵向模式录制的视频有问题

Android Intents,如何传递和接收 InetAddress?

android - 在 intent-filter 中处理 https 模式