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

跳转到网络设置界面

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。

你可能感兴趣的:(跳转到网络设置界面,ConnectivityManager,WebView,ScrollView)