Android中使用命令 adb shell am broadcast 發(fā)送廣播。
代碼:
注冊(cè)一個(gè)廣播接收器汁展,用來(lái)監(jiān)聽(tīng)廣播,如果收到了自己監(jiān)聽(tīng)到的廣播,則打印一條log:
public class MyBroadcastReceiverextends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("MyBroadcastReceiver","onReceive: start...");
throw new UnsupportedOperationException("Not yet implemented");
}
}
監(jiān)聽(tīng)的廣播內(nèi)容在AndroidManifest.xml設(shè)置:
讓廣播接收器MyBroadcastReceiver去監(jiān)聽(tīng)一條com.chen.broadcasttest.MY_BROADCAST的廣播
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.chen.broadcasttest.MY_BROADCAST"/>
</intent-filter>
</receiver>
MainActivity只打印一條log
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("MainActivity", "starts...");
}
}
啟動(dòng)app后虏等,在cmd中輸入
adb shell am broadcast -a com.chen.broadcasttest.MY_BROADCAST com.chen.broadcasttest
其中參數(shù) -a表示action;
com.chen.broadcasttest.MY_BROADCAS是廣播接收器想要監(jiān)聽(tīng)的廣播名稱
com.chen.broadcasttest是app的包名。在我的環(huán)境中适肠,不加入包名則無(wú)法發(fā)送廣播霍衫,不知道為什么。
執(zhí)行:
C:\Users\chen>adb shell am broadcast -a com.chen.broadcasttest.MY_BROADCAST com.chen.broadcasttest
Broadcasting: Intent { act=com.chen.broadcasttest.MY_BROADCAST flg=0x400000 pkg=com.chen.broadcasttest }
Broadcast completed: result=0
Android Studio中l(wèi)ogcat的結(jié)果:
2019-08-09 09:30:11.480 20631-20631/com.chen.broadcasttest D/MyBroadcastReceiver: onReceive: start...