Android 仿QQ微信實時監測網路狀態
先簡單說一下思路:網路變化時系統會發出廣播。所以我們監聽這個廣播,利用接
口回撥通知activity做相應的操作就好了。
思路
判斷網路狀態(寫個工具類NetUtil)
寫個類繼承BroadcastReceiver(不要忘記在清單檔案中註冊)
需要在清單檔案中新增許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
回撥介面(NetEvevt)
BaseActivity實現這個介面
直接上程式碼
NetUtil
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * Author: lenovo * Date: 2018/2/26 * email:
[email protected] */ public class NetUtil { /** * 沒有連線網路 */ public static final int NETWORK_NONE = -1; /** * 行動網路 */ public static final int NETWORK_MOBILE = 0; /** * 無線網路 */ public static final int NETWORK_WIFI = 1; public static int getNetWorkState(Context context) { // 得到連線管理器物件 ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager .getActiveNetworkInfo(); if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) { if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) { return NETWORK_WIFI; } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) { return NETWORK_MOBILE; } } else { return NETWORK_NONE; } return NETWORK_NONE; } }
NetBroadReceiver
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; /** * Author: lenovo * Date: 2018/2/26 * email: [email protected] */ public class NetBroadcastReceiver extends BroadcastReceiver { public NetEvevt evevt = BaseActivity.evevt; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub // 如果相等的話就說明網路狀態發生了變化 if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { int netWorkState = NetUtil.getNetWorkState(context); // 介面回撥傳過去狀態的型別 evevt.onNetChange(netWorkState); } } // 自定義介面 public interface NetEvevt { public void onNetChange(int netMobile); } }
BaseActivity
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
/**
* Author: lenovo
* Date: 2018/2/26
* email: [email protected]
*/
abstract public class BaseActivity extends FragmentActivity implements NetBroadcastReceiver.NetEvevt {
public static NetBroadcastReceiver.NetEvevt evevt;
/**
* 網路型別
*/
private int netMobile;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
evevt = this;
inspectNet();
}
/**
* 初始化時判斷有沒有網路
*/
public boolean inspectNet() {
this.netMobile = NetUtil.getNetWorkState(BaseActivity.this);
return isNetConnect();
// if (netMobile == 1) {
// System.out.println("inspectNet:連線wifi");
// } else if (netMobile == 0) {
// System.out.println("inspectNet:連線移動資料");
// } else if (netMobile == -1) {
// System.out.println("inspectNet:當前沒有網路");
//
// }
}
/**
* 網路變化之後的型別
*/
@Override
public void onNetChange(int netMobile) {
// TODO Auto-generated method stub
this.netMobile = netMobile;
isNetConnect();
}
/**
* 判斷有無網路 。
*
* @return true 有網, false 沒有網路.
*/
public boolean isNetConnect() {
if (netMobile == 1) {
return true;
} else if (netMobile == 0) {
return true;
} else if (netMobile == -1) {
return false;
}
return false;
}
}
MainActivity
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends BaseActivity {
private TextView textView,txtView;
ListView listView; //宣告一個ListView物件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView= (TextView) findViewById(R.id.textView);
txtView=(TextView)this.findViewById(R.id.txtView);
//啟動時判斷網路狀態
boolean netConnect = this.isNetConnect();
if (netConnect){
textView.setVisibility(View.GONE);
txtView.setText("網路連線正常");
}else {
textView.setVisibility(View.VISIBLE);
txtView.setText("網路連線異常");
}
}
@Override
public void onNetChange(int netMobile) {
super.onNetChange(netMobile);
//網路狀態變化時的操作
if (netMobile==NetUtil.NETWORK_NONE){
textView.setVisibility(View.VISIBLE);
txtView.setText("網路連線異常");
}else {
textView.setVisibility(View.GONE);
txtView.setText("網路連線正常");
}
}
}
記得在清單檔案中註冊
<receiver android:name="cn.broadcastreceiver.NetBroadcastReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
/**
* Author: lenovo
* Date: 2018/2/26
* email: [email protected]
*/
相關推薦
Android 仿QQ微信實時監測網路狀態
先簡單說一下思路:網路變化時系統會發出廣播。所以我們監聽這個廣播,利用接口回撥通知activity做相應的操作就好了。思路判斷網路狀態(寫個工具類NetUtil)寫個類繼承BroadcastReceiv
Android仿ios微信左劃條目刪除、置頂的實現,程式碼簡潔,更容易理解使用
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="background-color: rgb(255, 255, 255);">歡迎大家</span></span
仿QQ微信向左滑動點選刪除條目的經典案例
本篇文章主要介紹如何側滑刪除條目的案例: 首先我們需要做一個自定義的recyclerView 1,用到的東西有,onTouch事件,觸屏事件跟蹤VelocityTracker,滑動view.scrollTo和scrollBy,Scroller的使用。
Android仿最新微信自定義相機(長按拍攝,輕點拍照)
最近在開發即時通訊這個模組的時候使用到了自定義的相機,需求與微信一樣,要求相機能長按和輕點,當時在網上找自定義相機的資源,很少,所以,我在這裡把我的一些開發經驗貼出來,供大家學習。 大致完成的功能如下: 長按拍攝視訊,輕點拍照 前後攝像頭的切換 閃光的
Android 仿「微信」自定義數字鍵盤
最終效果: 實現這個自定義鍵盤的思路很簡單: 1. 要寫出一個數字鍵盤的佈局; 2. 與 Edittext 結合使用,對每個按鍵的點選事件進行處理; 3. 禁用系統軟鍵盤。 有了思路,實現起來就不難了。 1. 實現鍵盤的 xml 佈局 網格
Android 模仿QQ,微信聊天介面長按提示框
效果圖,有點糙 最近要在專案中實現一個長按提示 “複製” 的功能,本來想偷懶在網上找個開源的專案用,但是看了好幾個都不是很滿意,所以就打算按照自己的思路來實現一個。 如何使用 翠花,上程式碼 PromptViewHelper pvHelper = new Pro
安卓開發筆記(三十三):Android仿寫微信發現
朋友圈 博文 ext xmlns focus 微信 center img 程序員 首先我們來看看仿寫之後的效果: 看到是這個界面我們首先應該思考這些按鈕是怎麽做出來的?有了一個整體的思路之後才知道該怎麽辦。最開始我想的就直接利用button控件上面直接加上png的圖片
iOS開發實時監測網路狀態Reachability
1.首先在AppDelegate.h新增標頭檔案"Reachability.h",匯入框架SystemConfiguration.framework。Reachability自己網上找。 2. 在AppDelegate.m中這樣實現: - (BOOL)applicatio
android 仿QQ,微信群組裡的@功能,支援@多人,並能一鍵刪除,能獲取上傳對應的id(修改版)
首先註明該文章是借籤別人的部落格,原文博文地址點選開啟連結 android 仿QQ,微信群組裡的@功能,支援@多人,並能一鍵刪除,能獲取上傳對應的id 這個需求來源:本人做整合環信聊天時,專案需要@功能,但是環信並沒有提供@功能。環信@功能地址點選開啟連結 輸入@符號之後進入
仿微信實時聊天簡單資料庫設計
廢話不多說博主先上圖效果 此次實時聊天功能參考了資料,以及請教了師父給出設計,只設計了四張表,分別是,組表,組成員表,聊天記錄表,好友移除表。 這裡我先說下我的設計思路組表的意思和QQ 群一樣
vue3.0 仿微信實時通訊Tab切換與子路由
需求:底部有tab切換;點選當前會顯示對應的子頁面 效果圖 tab子元件: <template> <div class="tabbar"> <router-link class="tab-item" v-for
Android調用微信登陸、分享、支付
cep from thum 請求 mil 問題 start 返回 ear 前言:用了微信sdk各種痛苦,感覺比qq sdk調用麻煩多了,回調過於麻煩,還必須要在指定包名下的actvity進行回調,所以我在這裏寫一篇博客,有這個需求的朋友可以借鑒一下,以後自己別的項目有用到也
Android封裝類似微信的頂部TitleBar彈出的PopupWindow代碼
彈出 調用 pro con and switch nload csdn 實例化 Android仿微信頂部titlebar,點擊加號彈出的PopupWindow,是封裝好的PopupWindow,直接拿來用即可,先看效果圖: 調用代碼非常簡單,這是MainActivity的
ios開發之--仿(微信)自定義表情鍵盤
lai signed avi 創建 不能 url div load mps 先附上demo:https://github.com/hgl753951/CusEmoji.git 效果圖如下: 先說下具體的實現功能: 1,本地加載了一些H5的代碼,直接使用webview的lo
JavaScript 獲取並且判斷瀏覽器內核訪問類型(QQ/微信)
cas fun AS 瀏覽器內核 我們 開發者 ger pre ret 1、作用? 對於開發者而言,微信或者QQ自帶的瀏覽器內核或許不能夠為用戶帶來良好的體驗,所有有的時候我們需要引導用戶進入自帶瀏覽器體驗,所以這個功能主要是解決這個問題。 2、實現方法? 使
android app使用微信登錄接口回調沒有被執行的問題研究
The 應用平臺 cat 分享 github theme 調用 runnable handler 本人開發的一個app使用了sharesdk集成微信登錄功能,在測試的過程中微信授權登錄界面有調用,但是授權後原應用的回調沒有被執行 應用的包名是com.kimi.searche
Android app 第三方微信支付接入詳解
微信支付做了好幾遍了,都沒有出現什麼棘手的問題,下面一一為大家分享一下,歡迎吐槽。 還是老樣子,接入微信的支付要第一步新增微信支付官方的包libammsdk.jar 首先就處理略坑的一個問題,app應用簽名和包名的問題。 商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP的唯一標識AP
CAS統一登入認證(17): QQ,微信,人臉識別等第三方登入的另類實現
CAS本身支援許多第三方賬號登入認證,如facebook,github,google賬號等,簡單配置即可實現,網上也有一些通過改程式碼或增加代理網站實現QQ,微信登入的,但所有這些登入認證,最後使用者賬號並不是自己資料庫儲存的賬號,而是第三方的openid或者暱稱等,不是我們所需要的,轉換為對應的資
HTML5仿手機微信聊天介面
HTML5仿手機微信聊天介面,截圖效果如下: 原始碼如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5模擬微信聊天介面&l
【轉】Android動態破解微信本地資料庫(EnMicroMsg.db)
最近在公司接了一個任務,需要在幾百臺手機上安裝一個app,目的是獲取微信裡面的通訊錄,並且定時的把他傳送到我們的伺服器上。當時依次嘗試的如下幾個方案: 1.通過群控,將好友截圖傳送到服務端(python),利用python的影象識別庫來獲取好友的資訊。 2.開發一個app,使用