Java 我调用getAction()函数的意图值来自何处?(这是BroadcastReceiver类的重写方法)
我已经创建了一个广播接收器类,它工作得很好。我对onReceive方法中意图的价值从何而来感到困惑Java 我调用getAction()函数的意图值来自何处?(这是BroadcastReceiver类的重写方法),java,android,android-studio,broadcastreceiver,Java,Android,Android Studio,Broadcastreceiver,我已经创建了一个广播接收器类,它工作得很好。我对onReceive方法中意图的价值从何而来感到困惑 @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(wifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
@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();
}
}
}
主活动代码,我在其中创建了一个意图过滤器,并在其中添加了一个操作
@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
,并调用对象上的函数。当状态改变时,正在广播一个意图。有了接收者,你就同意了这些意图
您可以在Android文档中阅读关于WifiP2pManager的更多详细信息我还添加了初始化WifiP2pManager的代码。你说的状态变化是什么意思?您的意思是系统状态的改变,即wifi是否开启?这一变化将通过这一意图得到通知。请再解释一下。谢谢如果
wifiP2pManager
发现、连接等,则状态将更改,并且管理器将广播意图。因此,如果您收到一个意图,它来自wifiP2pManager