我需要检测Android设备是否已连接到Internet.
本NetworkInfo类提供了一个非静态方法isAvailable()听起来很完美.
问题是:
NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
抛出此错误:
The constructor NetworkInfo is not visible.
Run Code Online (Sandbox Code Playgroud)
安全的赌注是有另一个类返回一个NetworkInfo对象.但我不知道哪个.
我需要告诉我的设备是否有Internet连接.我找到了许多答案,如:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}
Run Code Online (Sandbox Code Playgroud)
(摘自检测Android上是否有可用的Internet连接.)
但这是不对的,例如,如果我连接到无法访问Internet的无线网络,此方法将返回true ... 是否有方法可以判断设备是否具有Internet连接,而不是仅仅连接什么?
我是Java和Android开发的新手,并尝试创建一个简单的应用程序,它应该联系Web服务器并使用http get将一些数据添加到数据库.
当我使用计算机中的Web浏览器进行呼叫时,它可以正常工作.但是,当我在Android模拟器中执行运行应用程序的调用时,不会添加任何数据.
我已将Internet权限添加到应用程序的清单中.Logcat不会报告任何问题.
任何人都可以帮我弄清楚什么是错的?
这是源代码:
package com.example.httptest;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class HttpTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
setContentView(tv);
try {
URL url = new URL("http://www.mysite.se/index.asp?data=99");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.disconnect();
tv.setText("Hello!");
}
catch (MalformedURLException ex) {
Log.e("httptest",Log.getStackTraceString(ex));
}
catch (IOException ex) {
Log.e("httptest",Log.getStackTraceString(ex));
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序wifi,用户将被要求输入他选择的扫描网络的密码,如果用户输入正确的密码,它连接并运行良好.但是当用户输入错误的密码时,会添加一个具有该名称的新网络,并且无法验证错误密码的cos,并且它将具有身份验证问题状态.
现在,如果用户尝试再次扫描并选择相同的网络,并输入正确的密码,即使密码现在正确并且将具有禁用状态,它也无法连接,因为之前的连接仍显示该身份验证问题状态.
如何解决这个问题呢?有没有办法忘记使用ConnectivityManager或wifimanager的所有网络?或任何其他解决方案?
我正在进行一个现场项目.当用户点击应用程序时 出现欢迎屏幕(该屏幕上有一个webview).如果互联网没有连接,那么应用程序崩溃.基本上,我的问题是以编程方式检查移动设备是否连接到互联网.如果没有,则不要将数据从webservice提取到webview中,并显示一个对话框,显示"检查你的网络连接"
在做研究时我发现了很多东西,我试图实现它.但是,它不满足我的要求
我的代码是,
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
else
{
Description.setVisibility(View.INVISIBLE);
new AlertDialog.Builder(WelcomePage.this)
.setTitle(getResources().getString(R.string.app_name))
.setMessage(
getResources().getString(
R.string.internet_error))
.setPositiveButton("OK", null).show();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我打电话这一功能doInBackground()的AsyncTask
请帮忙!
android android-webview android-internet android-websettings
我正在开发一个Android应用程序,我希望在互联网(wifi或分组数据连接)连接丢失时收到通知.在我的方法中,我可以获得连接的状态:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Run Code Online (Sandbox Code Playgroud)
在Manifest中有这个:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)
如何在连接丢失时自动通知我?
我有一个要求,当我连接网络时,我想检查是否有任何互联网连接.
例如,我有设备A和设备B.
设备A与设备B的热点连接.在设备A中,我将其与Wi-Fi和设备B连接 - 一个设备与热点连接.
现在,如果我从设备B(不是网络共享热点)中删除互联网,那么在设备A中,它仍会显示 - 与Wi-Fi连接,但没有互联网连接.
像ConnectivityManager这样的类有助于确定设备是否与网络连接而不是互联网连接.
我想跟踪这个问题.有没有办法实现这个目标?
我是Android开发的新手,正在开发一款Android应用程序,需要通过Wifi,EDGE或3G将手机连接到互联网.
这是我用来检查互联网连接是否可用的代码
public static boolean isConnected()
{
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
Run Code Online (Sandbox Code Playgroud)
我还在清单文件中设置了这些权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)
当启用3G时,这在运行Android 1.5版的模拟器中工作正常,但是当我禁用3G连接时它会崩溃.当我调用isConnectedOrConnecting()时,我的应用程序抛出空指针异常.运行Android 2.1的HTC Desire也会发生同样的事情.
希望有人知道解决这个问题.
提前致谢!
我的三星Galaxy S3手机最近从Android 4.1.3升级到Android 4.3.现在,我在Android互联网浏览器中测试的几个网站都没有显示我声明的字体@font-face.我需要做些什么来解决这个问题?
其中一个网站(开发版):http://beta.kdfansite.com
以下是Open Sans的一些相关CSS:
@font-face {
font-family: 'OpenSansSemibold';
src: url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.eot');
src: url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.woff') format('woff'),
url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.ttf') format('truetype'),
url('http://beta.kdfansite.com/wp-content/themes/scrollider/scrollider/webfonts/Open-Sans/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
font-weight: normal;
font-style: normal;
}
/* ... */
h2 {
font-family: 'OpenSansSemibold', Arial, sans-serif;
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
我在网站上使用的每种字体都以类似的方式声明.Great Vibes声明(也在custom.css中)用于"享受你的骑行"信息是另一个可比较的声明.所有字体都在适用于Android的Chrome和适用于Android的Firefox中在适用的设备上正常显示,但在Android Internet中则无法显示.
我需要尽快完成这个CSS,并作为一名志愿者(未付费)参与这个项目.所以我正在寻找快速修复而不是代码审查.我也是一名用户体验设计师,而不是网络开发人员.提前致谢.
编辑:今天我在Edge Inspect CC和Weinre做了一些额外的调试,将我的Android手机和iPad连接到我的笔记本电脑.在Weinre,我可以更改iPad上的字体系列,但不能更改手机上的字体系列.我可以更改两个设备上的字体颜色.所以看起来潜在的问题与我使用远程调试器时无法更改默认字体的事实有关.
css cross-browser font-face android-internet android-4.3-jelly-bean
我无法从Android-API中获取HttpParams内容.
我只是不想用我的Postrequest发送一些简单的参数.除参数外,一切正常.将参数设置为postrequest的代码:
HttpParams params = new BasicHttpParams();
params.setParameter("password", "secret");
params.setParameter("name", "testuser");
postRequest.setParams(params);
Run Code Online (Sandbox Code Playgroud)
似乎这段代码根本没有添加任何参数,因为服务器总是回答,我的请求缺少"名称"参数.
实际按预期工作的一个例子:
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("name", "testuser"));
postParameters.add(new BasicNameValuePair("password", "secret"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
postRequest.setEntity(formEntity);
Run Code Online (Sandbox Code Playgroud)
但我想使用第一个例子的版本,因为它更容易阅读和理解.
任何暗示都非常感谢!