您的位置:首页 > 理论基础 > 计算机网络

跳转到网络设置界面,ConnectivityManager,WebView,ScrollView

2015-09-12 20:04 393 查看

跳转到网络设置界面

Intent intent = null;

try {
String sdkVersion = android.os.Build.VERSION.SDK;
if (Integer.valueOf(sdkVersion) > 10) {
intent = new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS);
} else {
intent = new Intent();
ComponentName comp = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
}
LoginActivity.this.startActivity(intent);
finish();


ConnectivityManager

通过ConnectivityManager可以获得手机的网络信息,例如网络是否连接,网络的类型,名称,等信息。

代码如下:

首先获得网络管理器 connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
public void onClick(View v) {
switch (v.getId()){
case R.id.net_connect:
NetworkInfo info= connectivityManager.getActiveNetworkInfo();//获得网络详情,如果没有返回null
if(info!=null&&info.isConnected()){
Toast.makeText(getApplicationContext(),"有网络连接",Toast.LENGTH_LONG);
textView_net.setText("网络为:"+info.getTypeName());//获得网络的名字
}else {
Toast.makeText(getApplicationContext(),"没有网络连接",Toast.LENGTH_LONG);
}
break;
}
}


调用info.isConnected()获得是否连接。info.getTypeName()获得网络的名称。info.getType()==ConnectivityManager.TYPE_WIFI判读是否为WIFI网络。Info.getType()==ConnectivityManager.TYPE_MOBILE判读是否为3G网络。

注意

要获得这些手机的网络信息,必须在mainfests中声明权限。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


WebView

在应用中可以加载网页,这里提供了一个新的控件WebView,

在XML中的设置与其他控件没有什么区别。

在代码中可以设置WebView加载的网页地址,监听WebView的加载进度,设置是否网页可以缩放,等等。

1.缓存设置,设置是否优先使用缓存:

/**
* 缓存设置
*/
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存


2.缩放设置:

/**
* 缩放设置
*/
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true); // 显示放大缩小 controler
settings.setSupportZoom(true); // 可以缩放
settings.setDefaultZoom(WebSettings.ZoomDensity.CLOSE);// 默认缩放模式
settings.setUseWideViewPort(true);  //为图片添加放大缩小功能
webView.getSettings().setDisplayZoomControls(false);//设定缩放控件不显示


3.启动JavaScript加载界面并且覆盖系统加载页面的设置,WebViewClient用来处理一些页面控制和请求的通知。代码如下:

webView.setWebViewClient(new WebViewClient() {

/**
* 用来覆盖系统加载网页的设置
* @param view
* @param url
* @return
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);

return true;//一定要返回true
}

/**
* 加载开始
* @param view
* @param url
* @param favicon
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progressBar.setVisibility(View.VISIBLE);
super.onPageStarted(view, url, favicon);
}

/**
* 加载结束
* @param view
* @param url
*/
@Override
public void onPageFinished(WebView view, String url) {
progressBar.setVisibility(View.INVISIBLE);
super.onPageFinished(view, url);
}
});


4.设置back键返回上一个界面

/**
* 设置back键返回上几个界面
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
if(webView.canGoBack()){
webView.goBack();
return true;//这个必须设置
}else {
MainActivity.this.finish();
}
}
return super.onKeyDown(keyCode, event);
}


5.加载页面

webView.loadUrl("http://www.360.com/");


完整代码如下:

public class MainActivity extends Activity implements View.OnClickListener{
private Button net_button;
private TextView textView_net;
private ConnectivityManager  connectivityManager;
private WebView net_webView;
private TextView down_no;
private ProgressBar down_progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
net_button= (Button) findViewById(R.id.net_connect);
textView_net= (TextView) findViewById(R.id.net_datail);
net_webView = (WebView) findViewById(R.id.net_webView);
down_no= (TextView) findViewById(R.id.down_no);
down_progress= (ProgressBar) findViewById(R.id.down_progressBar);
net_webView.getSettings().setJavaScriptEnabled(true);

//实现放大与缩小
WebSettings settings = net_webView.getSettings();
settings.setBuiltInZoomControls(true); // 显示放大缩小 controler
settings.setSupportZoom(true); // 可以缩放
settings.setDefaultZoom(WebSettings.ZoomDensity.CLOSE);// 默认缩放模式
settings.setUseWideViewPort(true);  //为图片添加放大缩小功能
net_webView.getSettings().setDisplayZoomControls(false);//设定缩放控件
net_webView.setWebChromeClient(new WebChromeClient(){
//进度进行中
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
down_progress.setProgress(newProgress);
}
});
net_webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
net_webView.setVisibility(View.GONE);
down_no.setVisibility(View.VISIBLE);
}

//进度开始
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
down_progress.setVisibility(View.VISIBLE);//使进度条显示
}

//进度完成
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
down_progress.setVisibility(View.INVISIBLE);//隐藏进度条
}
});

net_button.setOnClickListener(this);
//获得网络管理器
connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
if(net_webView.canGoBack()){
net_webView.goBack();
return true;
}else {
MainActivity.this.finish();
}
}
return super.onKeyDown(keyCode, event);
}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.net_connect:

net_webView.loadUrl("http://www.bjlingzhuo.com/");
break;
}
}
}


ScrollView

ScrollView这个控件可以实现在一个屏不能加载完网页时,可以向下拖动。ScrollView只能有一个子空间,所以这个子空间一般是LearLayout。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: