论坛首页 编程语言技术论坛

Flex4.5 Mobile 检测网络连接类型

浏览 3064 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-22  

 

 

移动设备中连接网络,如果你不是在使用WiFi链接,你与服务器之间的数据链接会变得非常昂贵。

 

在Flex 4.5有一种方法来实际检查您是工作在移动数据链接(data contract)还是工作在WiFi连接上。

 

在应用程序中,您可以访问所有的设备接口,并检查它们是否处于活动状态 。你唯一需要知道的是如何寻找某个接口。

 

1. 源代码

 

在下面的代码中,你可以看到如何检查“WiFi”和“mobile”接口的,并检查它们是否处于活动状态。

 

 

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
		xmlns:s="library://ns.adobe.com/flex/spark"
		creationComplete="initView(event)"
		title="Exit">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			protected function initView(event:FlexEvent):void
			{
				checkConnction();
			}
			
			protected function checkConnction():void{
				
				var connectionEnable:Boolean = false;
				
				var interfaces:Vector.<NetworkInterface> = NetworkInfo.networkInfo.findInterfaces();
				for (var i:int = 0; i < interfaces.length; i++) 
				{
					if(interfaces[i].name.toLowerCase() == "wifi" && interfaces[i].active){
						lbl.text = "WiFi 连接可用...";
						connectionEnable = true;
						break;
					}
					else if(interfaces[i].name.toLowerCase() == "mobile" && interfaces[i].active){
						lbl.text = "移动网络连接,产生网络费用,最好使用WiFi...";
						connectionEnable = true;
						break;
					}
				}
				
				if(connectionEnable == false){
					lbl.text = "网络连接失败,请检查网络连接...";
				}
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<s:Label text="网络测试:" horizontalCenter="-1" verticalCenter="-35" />
	
	<s:Label id="lbl" horizontalCenter="1" verticalCenter="0" />
	
	<s:Button label="刷新" click="{checkConnction();}" />
	
</s:View>

 

请记住,有些人可能只通过移动的数据链接,但没有注册的话,那么仅找到“mobile”还是不够的。

 

 

2. 在<applicationName>-app.xml文件中,在android这段设置适当的权限.

应包含设置ACCESS_NETWORK_STATE和ACCESS_WIFI_STATE的权限,以便应用程序能正常工作。

如果不设置,你将会从findInterfaces方法的返回中得到一个空的向量。

<android>
	<manifestAdditions><![CDATA[
			<manifest android:installLocation="auto">
			    <!--See the Adobe AIR documentation for more information about setting Google Android permissions-->
			    <!--删除 android.permission.INTERNET 权限将导致无法调试设备上的应用程序-->
			    <uses-permission android:name="android.permission.INTERNET"/>
			    
			    <!--应同时切换 ACCESS_NETWORK_STATE 和 ACCESS_WIFI_STATE 权限,才能使用 AIR 的 NetworkInfo API-->
			    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
			    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
			</manifest>
			
		]]></manifestAdditions>
</android>

 

3. 运行结果.

 

 

 

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics