java - 我调用 getAction() 函数的 Intent 值从哪里来? (这是BroadcastReceiver类的重写方法)

标签 java android android-studio broadcastreceiver

我创建了一个广播接收器类,它工作正常。我对 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/

相关文章:

java - 获取打开的选项卡 Selenium/Java 的 URL

android - 如何更改android模拟器的电话号码

android - 仅在 Debug模式下使用特定的 minSdkVersion

android - 在 Android 上获取 VPN 连接状态

java - 通过 onmapclick 在谷歌地图上添加标记

java - 为什么整数类对象的引用增量会操纵整数值?

java - 如何在 Eclipse 中像 Visual Studio 一样进行分节

android - Android Studio安装程序代理问题

Android Studio 构建错误 - "Failed to resolve: monitor"

java - IntelliJ 中自动生成的 JAXB stub 的导入无法识别