【问题标题】:Intent action for new network added (Android)添加了新网络的意图操作(Android)
【发布时间】:2011-03-24 19:26:54
【问题描述】:

WiFiManager 有一个 addNetwork(wifiConfiguration) 方法,允许以编程方式添加新网络。每当用户/本地管理器尝试连接到新的接入点并且我想收听此事件时,系统也会在后台执行此操作。

我试过了:

IntentFilter myStateChanged = new IntentFilter();       
myStateChanged.addAction( WifiManager.NETWORK_IDS_CHANGED_ACTION );
ctx.registerReceiver(myStateChgRcvr, myStateChanged);

但是在我的广播接收器中,我应该如何处理意图对象来获取所需的信息?我想确定这确实是添加了新网络配置文件的情况,并且我想获取该网络的信息:

private BroadcastReceiver myStateChgRcvr = new BroadcastReceiver() {        
    @Override
    public void onReceive(Context context, Intent i) {          
        i.getParcelableExtra(...)); //???
    }
};

非常感谢,

斯皮策

【问题讨论】:

    标签: android wifi


    【解决方案1】:

    但是在我的广播接收器中,我应该如何处理意图对象来获取所需的信息?

    什么都没有。 Intent 上没有记录在案的 Intent 额外内容。

    我想确定这确实是添加了新网络配置文件的情况,并且我想获取该网络的信息:

    WifiManager 上致电getConfiguredNetworks(),看看是否有任何变化,我猜。

    【讨论】:

    • 调用 getConfiguredNetworks() 并检查更改会降低性能。你认为听 WifiManager.NETWORK_IDS_CHANGED_ACTION 会最大程度地减少我需要做的次数,还是有更好的行动来听?
    • @Spitzer:“调用 getConfiguredNetworks() 并检查更改会降低性能”——您对此的证明是……究竟是什么? “有更好的行动来听吗?” -- 我不知道。
    • 太好了,我会那样做的。我只是不确定还有什么原因导致 NETWORK_IDS_CHANGED_ACTION 触发事件,并且我不想在每次进行网络扫描(或任何此类)时运行潜在的繁重请求。我尝试对其进行测试,我认为它仅在添加或删除网络时才会触发,这是真的吗?无论如何,非常感谢您的快速回复:)
    • @Spitzer:我没有使用该操作,但从文档中我假设它仅在添加/删除的网络上调用,就像我假设 getConfiguredNetworks() 相当便宜一样(在 RAM 中,或者在最坏的情况下,在闪存数据库中)。
    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 2012-05-22
    • 2012-12-24
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多