我创建了一个广播接收器类,它工作正常。我对 onReceive 方法中 Intent 值的来源感到困惑。
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(wifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action))
{
int state=intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE,-1);
if(state==WifiP2pManager.WIFI_P2P_STATE_ENABLED){
Toast.makeText(context,"Wifi is ON",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(context,"Wifi is OFF",Toast.LENGTH_SHORT).show();
}
}
}
主要 Activity 代码,我在其中创建了 Intent 过滤器,并在其中添加了操作。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_device);
wifiP2pManager = (WifiP2pManager)
getSystemService(Context.WIFI_P2P_SERVICE);
channel = wifiP2pManager.initialize(this,getMainLooper(),null);
broadcastReceiver = new WiFiDirectBroadcastReceiver(wifiP2pManager, channel, this);
intentFilter = new IntentFilter();
intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
}
最佳答案
如果您的 BroadcastReceiver 工作正常,那么您必须已初始化 wifiP2pManager
并调用该对象的函数。当状态发生变化时,就会广播 Intent 。通过接收者,您可以订阅这些 Intent 。
您可以在 Android 文档 Wi-Fi Direct (peer-to-peer or P2P) overview 中阅读有关 WifiP2pManager 的更多详细信息。
关于java - 我调用 getAction() 函数的 Intent 值从哪里来? (这是BroadcastReceiver类的重写方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299413/