A. Android如何获取网络连接状态及怎样调用网络配置界面
可以调用SDK中的API判断是否有网络连接,以下为示例代码:
1、获取对象
Context context = activity.getApplicationContext();
// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、获取NetworkInfo对象
// 获取NetworkInfo对象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判断当前网络状态是否为连接状态
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED){
return true;
}
4、在AndroidManifest.xml中添加访问当前网络状态权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
5.转跳到网络设置界面
// 跳转到系统的网络设置界面
Intent intent = null;
// 先判断当前系统版本
if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上
intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
}
context.startActivity(intent);
B. 安卓手机网怎么连接电脑
首先打开系统设置向下找到开发人员选项,先打开右上角的滑块为开启后勾选USB调试,当打开USB调试后,电脑上打开管理软件,并连接USB线缆,根据软件提示安装驱动连接即可。
安卓手机连接电脑上网已经不是什么新鲜的事了,很多朋友都会将家用的电脑,通过随着wifi或者笔记本设置WiFi共享,让电脑附近的智能手机可以连接电脑共享WiFi无线网络免费上网。今天百事网小编为大家带来的是安卓手机usb连接电脑上网方法,适合不想购买随身WiFi,无法实现WiFi共享的台式电脑用户使用。
安卓手机usb连接电脑上网注意事项:
●电脑必须可以上网;
●安卓手机连接电脑前,请先开启USB调试模式;
●安卓手机需要已经ROOT权限,并且已经在电脑中安装了手机驱动(一般使用过豌豆荚、360手机助手后,一般都已经安装好了,初次连接某台电脑,可以借助手机助手先安装驱动);
安卓手机usb连接电脑上网设置教程
一、首先需要下载安装usb无线上网工具,名称为【Android Reverse Tethering】(里面包含安卓手机工具和PC工具),大家可以网络搜索一下,选择中文版下载;
二、将安卓手机通过USB数据线与电脑连接,放了防止连接失败,连接前,请将电脑中已经开启的豌豆荚等手机助手工具关闭;
三、将下载工具中的Tracetool service.apk安装至安卓手机,运行后点击“Ip Tables”按钮,在弹出的对话框中允许软件获取Root权限,如下图所示。
四、在电脑中运行压缩包里的AndroidTool.exe,先点击“Refresh”按钮获取设备ID,再点击“Check DNS”自动获得DNS,最后点击“Connect”按钮后,你的手机就能通过USB共享PC的有线网络了,如下图所示。
进行以上几步操作,您的安卓手机就可以通过USB连接电脑免费上网了,您可以关于移动网络,然后使用手机打开电脑百事网手机版m.pc841.com看看是否可以免费上网了。
C. android socket请求数据怎么抓包
从网络上面搜索到的资料看,要抓取手机中app的网络包有下面几种方式:
(1).将tcpmp移植到Android平台,然后在命令行下启动tcpmp进行抓包。Tcpmp程序实际上可以看作是wireshark的命令行版本,将该程序移植到Android平台直接抓包,这是一种最直接的抓包方式,然后将抓获的数据包文件,从手机传到windows系统上用wireshark打开进行分析,这种方式貌似不能用于苹果手机。
(2).使用fiddler,在windows系统上打开fiddler软件,该软件会将我们的电脑变成一个代理,然后在手机上设置wifi网络,将代理指定为开启fiddler的那台电脑,并且端口设置为fiddler侦听的8888端口,这时候使用手机访问的数据,就会通过该代理,在fiddler中就可以看到http的数据包。这种方法我试了半天怎么都看不到数据包,不知道哪里出问题了,根据原理,这种方式支持可以通过代理访问网络的手机。所以从原理上说是支持Android和苹果手机的。
(3).通过各种方式在pc电脑上建立wifi热点,然后使用wireshark在pc电脑上监视该wifi热点,通过手机连接该热点访问网络。这样wireshark会获取所有流经该热点的数据包这种方式适用于所有能够无线访问的手机,也就是说所有的Android和苹果手机。
那么如何在pc电脑上建立wifi热点呢,有这么几种办法:
(1).Win7电脑经过设置,可以将无线网卡设置为wifi热点,这种方法我以前用过,可以成功,但是步骤繁琐,而且不一定能够成功,其他的windows系统估计就没戏了。
(2).使用软件自动建立wifi热点,不需要自己手工配置,这样的软件有Connectify Hotspot,猎豹免费wifi,360免费wifi软件,这几个软件我都使用过,比较好用,这种方式同样也只能针对有无线网卡的笔记本电脑,原理也是将笔记本电脑上的无线网卡建立热点了,只不过是软件自动的,不需要人工设置,比方法1要方便。
注意:经过实验发现,手机连接这种方式建立的热点,所发送的数据,用wireshark去抓包,需要捕获电脑上本身联网的那个“网络连接”,例如我的笔记本上面有一个“本地连接”,该连接是使用有线网络的。我用猎豹免费wifi软件建立一个热点之后,我的电脑上多出一个“无线网络连接3”,可以看到该“无线网络连接3”是猎豹生成的,但是我抓包的时候,wireshark需要捕获“本地连接”上的包,也就是我的手机访问的数据实际上还是使用的“本地连接”,通信IP也是“本地连接”上的IP地址,而在手机的wifi连接设置中看到的ip地址,在我抓的包中也搜不到,也就是说手机通过该热点访问网络,实际上还是使用的“本地连接”的IP地址,至于是什么原理,我目前也不太清楚。但是下面要说的随身wifi硬件则与此不同,随身wifi是建立了网卡。
(3).使用随身wifi硬件。这种也是很方便的方法,而且比较稳定,对笔记本电脑和台式机都可以使用。我之前买了一个360的随身wifi(不是打广告,本人对360公司不感冒,但是他的随身wifi做的确实还可以,同事中有买小米wifi的,不太稳定)。只要在360的官网上下载驱动,直接插上随身wifi就可以使用,我推荐使用这种方法。
如果你用的是笔记本电脑可以使用方法2,如果是台式机器可以使用方法3。
D. 如何对Android设备进行网络抓包
方法/步骤
启动Fiddler,打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler Options”对话框。
在Fiddler Options”对话框切换到“Connections”选项卡,然后勾选“Allow romote computers to connect”后面的复选框,然后点击“OK”按钮。
在本机命令行输入:ipconfig,找到本机的ip地址。
打开android设备的“设置”->“WLAN”,找到要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,然后勾选“显示高级选项”。
在“代理”后面的输入框选择“手动”,在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888,然后点击“保存”按钮。
然后启动android设备中的浏览器,访问网络的首页,在fiddler中可以看到完成的请求和响应数据。
E. android判断网络连接状态检测有现成的jar包吗
一、思路:使用静态的方法注册广播,接收网络状态信息,没有网络的时候提示“当前网络不可用,请检查网络是否已经连接..”
二、详细实现过程:
编写NetStateUtil类,检查网络状态
java">/**
*检测当前网络是否连接可用
*@authorTeachCourse
*
*@returntrue|false
*/
(Contextcontext){
=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivity==null){
returnfalse;
}else{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
if(info!=null){
for(inti=0;i<info.length;i++){
if(info[i].getState()==NetworkInfo.State.CONNECTED){
returntrue;
}
}
}
}
returnfalse;
}
编写广播接收器ConnectionChangeReceiver
{
@Override
publicvoidonReceive(Contextcontext,Intentarg1){
if(!SysUtil.isNetworkAvailable(context)){//网络可用
ToastUtil.getInstance(context).showToast(Toast.LENGTH_LONG,R.string.not_internet_now);
}
}
}
在基类中注册广播
IntentintentNet=newIntent();
intentNet.setAction(netAction);
sendBroadcast("cn.teachcourse.receiver.connectionChangeReceiver");
在AndroidManifest.xml注册广播
<receiver
android:name="cn.teachcourse.receiver.ConnectionChangeReceiver"
android:exported="false">
<intent-filter>
<actionandroid:name="cn.teachcourse.receiver.connectionChangeReceiver"/>
</intent-filter>
</receiver>
F. 如何在Android中实现一个简单连接网络的应用程序
连接网络,可以读取网络状态,网络一下googlewifiapi就可以看到很多使用方法。
G. android开发中常用的网络连接方式有哪些
告诉你几个代码把,这些都是连接方式:
Activity.startActivities() 常用于在应用程序中间启动其他的Activity.
TextUtils.isEmpty() 简单的工具类,用于检测是否为空
Html.fromHtml() 用于生成一个Html,参数可以是一个字符串.个人认为它不是很快,所以我不怎么经常去用.(我说不经常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromHtml),但是它对渲染从 web 上获取的文字还是很不错的。
TextView.setError() 在验证用户输入的时候很棒
Build.VERSION_CODES 这个标明了当前的版本号,在处理兼容性问题的时候经常会用到.点进去可以看到各个版本的不同特性
Log.getStackTraceString() 方便的日志类工具,方法Log.v()、Log.d()、Log.i()、Log.w()和Log.e()都是将信息打印到LogCat中,有时候需要将出错的信息插入到数据库或一个自定义的日志文件中,那么这种情况就需要将出错的信息以字符串的形式返回来,也就是使用static String getStackTraceString(Throwable tr)方法的时候.
LayoutInflater.from() 顾名思义,用于Inflate一个layout,参数是layout的id.这个经常写Adapter的人会用的比较多.
ViewConfiguration.getScaledTouchSlop() 使用 ViewConfiguration 中提供的值以保证所有触摸的交互都是统一的。这个方法获取的值表示:用户的手滑动这个距离后,才判定为正在进行滑动.当然这个值也可以自己来决定.但是为了一致性,还是使用标准的值较好.
PhoneNumberUtils.convertKeypadLettersToDigits 顾名思义.将字母转换为数字,类似于T9输入法,
Context.getCacheDir() 获取缓存数据文件夹的路径,很简单但是知道的人不多,这个路径通常在SD卡上(这里的SD卡指的是广义上的SD卡,包括外部存储和内部存储)Adnroid/data/您的应用程序包名/cache/ 下面.测试的时候,可以去这里面看是否缓存成功.缓存在这里的好处是:不用自己再去手动创建文件夹,不用担心用户把自己创建的文件夹删掉,在应用程序卸载的时候,这里会被清空,使用第三方的清理工具的时候,这里也会被清空.
ArgbEvaluator 用于处理颜色的渐变。就像 Chris Banes 说的一样,这个类会进行很多自动装箱的操作,所以最好还是去掉它的逻辑自己去实现它。这个没用过,不明其所以然,回头再补充.
ContextThemeWrapper 方便在运行的时候修改主题.
Space space是Android 4.0中新增的一个控件,它实际上可以用来分隔不同的控件,其中形成一个空白的区域.这是一个轻量级的视图组件,它可以跳过Draw,对于需要占位符的任何场景来说都是很棒的。
ValueAnimator.reverse() 这个方法可以很顺利地取消正在运行的动画.我超喜欢.
DateUtils.formatDateTime() 用来进行区域格式化工作,输出格式化和本地化的时间或者日期。
AlarmManager.setInexactRepeating 通过闹铃分组的方式省电,即使你只调用了一个闹钟,这也是一个好的选择,(可以确保在使用完毕时自动调用 AlarmManager.cancel ()。原文说的比较抽象,这里详细说一下:setInexactRepeating指的是设置非准确闹钟,使用方法:alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent),非准确闹钟只能保证大致的时间间隔,但是不一定准确,可能出现设置间隔为30分钟,但是实际上一次间隔20分钟,另一次间隔40分钟。它的最大的好处是可以合并闹钟事件,比如间隔设置每30分钟一次,不唤醒休眠,在休眠8小时后已经积累了16个闹钟事件,而在手机被唤醒的时候,非准时闹钟可以把16个事件合并为一个, 所以这么看来,非准时闹钟一般来说比较节约能源。
Formatter.formatFileSize() 一个区域化的文件大小格式化工具。通俗来说就是把大小转换为MB,G,KB之类的字符串。
ActionBar.hide()/.show() 顾名思义,隐藏和显示ActionBar,可以优雅地在全屏和带Actionbar之间转换。
Linkify.addLinks() 在Text上添加链接。很实用。
StaticLayout 在自定义 View 中渲染文字的时候很实用。
Activity.onBackPressed() 很方便的管理back键的方法,有时候需要自己控制返回键的事件的时候,可以重写一下。比如加入 “点两下back键退出” 功能。
GestureDetector 用来监听和相应对应的手势事件,比如点击,长按,慢滑动,快滑动,用起来很简单,比你自己实现要方便许多。
DrawFilter 可以让你在不调用onDrew方法的情况下,操作canvas,比了个如,你可以在创建自定义 View 的时候设置一个 DrawFilter,给父 View 里面的所有 View 设置反别名。
ActivityManager.getMemoryClass() 告诉你你的机器还有多少内存,在计算缓存大小的时候会比较有用.
ViewStub 它是一个初始化不做任何事情的 View,但是之后可以载入一个布局文件。在慢加载 View 中很适合做占位符。唯一的缺点就是不支持标签,所以如果你不太小心的话,可能会在视图结构中加入不需要的嵌套。
SystemClock.sleep() 这个方法在保证一定时间的 sleep 时很方便,通常我用来进行 debug 和模拟网络延时。
DisplayMetrics.density 这个方法你可以获取设备像素密度,大部分时候最好让系统来自动进行缩放资源之类的操作,但是有时候控制的效果会更好一些.(尤其是在自定义View的时候).
H. Android逆向之http/https网络抓包
用于android app的http/https网络抓包的主要有以下三个工具
由于这个知识点网上的资料比较多,我就不重复造车了,charles和burpsuite在linux下用,windows下推荐使用fiddler,功能比较强大,写的比较好的文章:
fiddler Android下https抓包全攻略
另外的方法可见:
http://blog.dornea.nu/2015/02/20/android-remote-sniffing-using-tcpmp-nc-and-wireshark/