zoukankan      html  css  js  c++  java
  • Android笔记之网络状态推断

    1、首先当然得在 manifest 中加入检查网络状态的权限;
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"/>

    2、详细推断步骤
    (1)首先要先获得Android 对连接管理的一个类对象。
         ConnectivityManager manager = (ConnectivityManager)getSystemService(
    Context.CONNECTIVITY_SERVICE);
    (2)获得网络链接状态
    if (manager.getActiveNetworkInfo() != null) {
       networkFlag = manager.getActiveNetworkInfo().isAvailable();
      }

    (3)假设没有连接,弹出对话框提示用户连接,并在“设置”button里让用户跳转到设置网络界面。
    if (! networkFlag) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
                 builder.setIcon(android.R.drawable.ic_dialog_alert);
                 builder.setTitle("网络状态");
                 builder.setMessage("当前网络不可用。是否设置网络?");
                 builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
                     
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         // TODO Auto-generated method stub
                      Intent wifiSettingsIntent = new Intent("android.settings.WIFI_SETTINGS");
                         startActivity(wifiSettingsIntent);
                     }
                 });
                 builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                     
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         dialog.cancel();
                     }
                 });
                 builder.create();
                 builder.show();
      }

    (4)最后一步,也是比較关键一步,就是在manifest 里声明该Activity 。 假设没做,则会出现“xxx 已经停止执行”,原因显而易见。
    问题是,我们曾经都是自己建立的Activity ,知道怎样声明。这里是系统自己的setting , 我们怎样声明呢?

            <PreferenceScreen
                android:title="设置网络"
                android:summary=" ">
                <intent
                    android:action="android.intent.action.MAIN"
                    android:targetPackage="com.android.settings"
                    android:targetClass="com.android.settings.WirelessSettings" />
            </PreferenceScreen>  

    在application 里面写上以上代码就可以。

     (困惑了好久,最终在一个前辈博客里找到了答案,在此感谢,http://blog.csdn.net/shenyuemei/article/details/8005241)


    因为代码简单,所以就不上传DEMO 代码了。
  • 相关阅读:
    Service Workers里的CacheStorage和Cache
    application cache和localstorage的区别
    localStorage和sessionStorage区别
    Ubuntu软件的安装和使用
    C++之数据类型
    C++之C++的词法单位
    C++之语言概述
    Ubuntu双系统无法挂载Windows10 硬盘的解决方法
    opencv 显示摄像头数据
    Ubuntu 中使用git 上传代码
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7088161.html
Copyright © 2011-2022 走看看