我想知道如何創建一個方法,當檢測到沒有任何連接到互聯網的移動,然後該方法嘗試連接服務器每隔5秒,如果你可以舉一個例子來說明如何改進它,我將不勝感激!謝謝!Android Studio:創建一個方法,試圖連接到互聯網
回答
可能是這段代碼對您有幫助。
ConnectivityManager conMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected()) {
Toast.makeText(context, "Internet Available", Toast.LENGTH_SHORT).show();
return true;
} else {
if (isShowAlert) {
Toast.makeText(context,
"NOT Internet Connection",
Toast.LENGTH_SHORT).show();
}
return false;
}
這隻會檢查一個設備是否連接到一個連接,但不要檢查互聯網是否開啓或關閉。 –
當您調用Web服務或其他東西時,您需要連續調用此方法。 –
public static boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) yourContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
檢查
if(isNetworkAvailable()){
// connected to internet
}else{
// not connected
}
這隻會檢查設備是否連接到連接,但不檢查互聯網是打開還是關閉。 –
這可能是有益的,
int intervalTime = 5000; // 5 sec
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
internetConnection();
}
}, intervalTime);
public class InternetConnection {
/** CHECK WHETHER INTERNET CONNECTION IS AVAILABLE OR NOT */
public static boolean checkConnection(Context context) {
final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connMgr.getActiveNetworkInfo();
if (activeNetworkInfo != null) { // connected to the internet
Toast.makeText(context, activeNetworkInfo.getTypeName(), Toast.LENGTH_SHORT).show();
if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
return true;
} else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
// connected to the mobile provider's data plan
return true;
}
}
return false;
}
}
這隻會檢查連接到連接的設備,但不檢查互聯網是否打開。 –
有沒有需要檢查每一次。 在清單和項目中定義Connectivity Change廣播監聽器,並在連接發生變化時檢查連接(由@Priyank Virani提供給您的代碼)
您應該處理一些特殊情況。有些時候,無線網絡連接,你連接到本地的無線網絡。在這種情況下,你需要輸入一個密碼才能使用互聯網(如圖書館,機場等),上面的代碼在互聯網連接時返回true,但實際上它是假的!您應該通過調用您提供的webService或通過調用net中着名服務的api來檢查它。
調用網絡有關的事情,每5秒,防止休眠設備和對設備
以前我用這些方法中的一個電池從How to check internet access on Android? InetAddress never times out極壞的影響:
public static int isInternetActiveWithPing() {
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = process.waitFor();
return exitValue;
} catch (Exception ex) {
return -1;
}
}
public static boolean isInternetActiveWithInetAddress() {
try {
InetAddress inetAddress = InetAddress.getByName("www.google.com");
return inetAddress != null && !inetAddress.toString().equals("");
} catch (Exception ex) {
return false;
}
}
但它有一個主要的缺點,我們需要經常檢查互聯網是否關閉。
最好的方法是使用NetworkEvents。這個庫監聽網絡連接狀態和WiFi信號強度的變化與事件總線這也檢查是否有互聯網連接與否。
通過使用NetworkEvents,您不需要每5秒重新檢查一次Internet連接。
謝謝!以及我試圖與networkEvent從我的wifi斷開互聯網,但沒有檢測到有沒有互聯網,只是當我關掉無線網絡是「OnEvent」方法被稱爲,你知道如何解決它? – Raxor
您是否啓用了網絡檢查:'networkEvents = new NetworkEvents(context,busWrapper) .enableInternetCheck();'? –
是的,我做了這個networkEvents = new NetworkEvents(getApplicationContext(),busWrapper).enableInternetCheck()。setPingParameters(「www.google.com」,80,3000);但有了這個告訴我,當我連接到一個無線網絡,如果有互聯網或不是,但是互聯網狀態的變化,功能不告訴我 – Raxor
創建於erver 5秒運行於改造2.2
public class GApiClient {
private static GServiceApi REST_CLIENT;
public static final String API_URL = "YOUR BASE URL";
static {
setupRestClient();
}
private ApiClient() {
}
public static ServiceApi get() {
return REST_CLIENT;
}
private static void setupRestClient() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_URL_TEST)
.addConverterFactory(GsonConverterFactory.create())
.build();
REST_CLIENT = retrofit.create(GServiceApi.class);
}
}
Handler myHandler = new Handler();
myRunnable = new Runnable() {
@Override
public void run() {
if(isNetWorkAvailable(getActivity()))
{
webService();
}
else
{
//NO NETWORK
}
}
};
myHandler.postDelayed(myRunnable, 5000);// runs in ever 5 sec
private void webservice() {
// create 2 getters and setters java classes ie..LoginRequest & LoginResponse
LoginRequest loginRequest = new LoginRequest(userEmail, userPassword);
final ProgressDialog progressDialog = new ProgressDialog(mContext);
progressDialog.setTitle("Please Wait");
progressDialog.show();
Call<LoginResponse> call = GApiClient.get().postWithFormParams(loginRequest);
call.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Response<LoginResponse> response) {
progressDialog.dismiss();
Log.i("Response ", "Present");
}
@Override
public void onFailure(Throwable t) {
progressDialog.dismiss();
RetrofitError retrofitError;
if (e instanceof RetrofitError) {
retrofitError = ((RetrofitError) e);
if (retrofitError.getKind() == RetrofitError.Kind.NETWORK) {
return "Network is down!";
}
}
Log.i("Response ", " error");
}
});
}
public static int getConnectivityStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (null != activeNetwork) {
return TYPE_WIFI;
}
return TYPE_NOT_CONNECTED;
}
public static boolean isNetWorkAvailable(Context context) {
int status = getConnectivityStatus(context);
if (status != 0) {
return true;
} else {
return false;
}
}
Apiclient類創建一個接口ServiceApi
public interface ServiceApi {
@POST("/verify/json") //rest of url
Call<Employee> postWithFormParams(@Body UserDetails data);
}
古丁改造的一部分。代碼僅檢查連接到連接的設備,但不檢查互聯網是打開還是關閉。 –
沒有得到您的情況...上面的代碼檢查是否有互聯網連接 –
您可以嘗試將您的設備連接到未連接到互聯網的WiFi接入點。或嘗試使用本地網絡。 –
- 1. Android AVD無法連接到互聯網
- 2. 在Android中測試互聯網連接
- 3. 互聯網連接內的一個片段android studio
- 4. 互聯網連接測試
- 5. Android:建立互聯網連接
- 6. 在android中建立互聯網連接
- 7. 互聯網連接
- 8. android不連接到互聯網
- 9. android連接到互聯網事件
- 10. Android - 讓用戶連接到互聯網
- 11. Android:使用哪個互聯網連接?
- 12. 連接一個Android應用程序沒有互聯網連接
- 13. gethostbyname,連接到互聯網?
- 14. 創建未連接到互聯網的子網絡
- 15. AVD無法連接到互聯網
- 16. Eclipse無法連接到互聯網
- 17. Netbeans無法連接到互聯網
- 18. Visual Studio互聯網連接失敗
- 19. Android連續檢查互聯網連接
- 20. 互聯網連接重試的策略
- 21. Android:檢查互聯網連接的服務內部,並等到互聯網連接建立
- 22. Android互聯網連接檢查更好的方法
- 23. 最好的方法來檢查Android中的互聯網連接
- 24. 無法連接到互聯網,連接拒絕
- 25. 檢查iPhone是否試圖連接到互聯網
- 26. 互聯網連接測試(VB.NET)
- 27. 沒有互聯網連接
- 28. 創建一個網絡應用程序,它可以通過互聯網連接
- 29. 互聯網連接錯誤
- 30. android模擬器無法連接到互聯網
[如何檢查網絡連接的可能的複製句柄在Android上訪問? InetAddress永不超時](http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-times-out) –