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/