【问题标题】:No Internet Connection , not showing , android webview没有互联网连接,没有显示,android webview
【发布时间】:2017-01-07 23:02:21
【问题描述】:

下面是我的代码。 Android Studio 没有显示任何错误,但是当我在没有连接的情况下运行该应用程序时,它不会显示我的消息..

public class MainActivity extends AppCompatActivity {

    List item

    DrawerLayout drawerLayout;
    ActionBarDrawerToggle drawerToggle;
    NavigationView navigation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initInstances();

        WebView myWebView = (WebView) findViewById(R.id.webView1);
        myWebView.getSettings().setJavaScriptEnabled(true);


        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.setWebViewClient(new WebViewClient());
        Context context = this;
        ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean isConnected = activeNetwork != null &&
            activeNetwork.isConnectedOrConnecting();
        if(isConnected) {
            myWebView.loadUrl("http://alokitojhalakati.com");
        } else {
            Toast toast = Toast.makeText(MainActivity.this, "No Internet Connection", Toast.LENGTH_LONG);
            toast.show();
        }
    }

    private void initInstances() {
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        drawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.hello_world, R.string.hello_world);
        drawerLayout.setDrawerListener(drawerToggle);

        navigation = (NavigationView) findViewById(R.id.navigation_view);
        navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                int id = menuItem.getItemId();
                switch (id) {
                    case R.id.navigation_item_1:
                        startActivity(new Intent(MainActivity.this,MainActivity.class));
                        break;
                    case R.id.navigation_item_2:
                        startActivity(new Intent(MainActivity.this,NationalActivity.class));
                        break;
                    case R.id.navigation_item_3:
                        startActivity(new Intent(MainActivity.this,Jhalakati.class));
                        break;
                    case R.id.navigation_item_4:
                        startActivity(new Intent(MainActivity.this,RajapurActivity.class));
                        break;
                    case R.id.navigation_item_5:
                        startActivity(new Intent(MainActivity.this,NolcityActivity.class));
                        break;
                    case R.id.navigation_item_6:
                        startActivity(new Intent(MainActivity.this,KathaliaActivity.class));
                        break;
                    case R.id.navigation_item_7:
                        startActivity(new Intent(MainActivity.this,SaradeshActivity.class));
                        break;
                    case R.id.navigation_item_8:
                        startActivity(new Intent(MainActivity.this,EconomicsActivity.class));
                        break;
                    case R.id.navigation_item_9:
                        startActivity(new Intent(MainActivity.this,SportsActivity.class));
                    break;
                case R.id.navigation_item_10:
                    startActivity(new Intent(MainActivity.this,EntertainmentActivity.class));
                        break;
                    case R.id.navigation_item_11:
                        startActivity(new Intent(MainActivity.this,ITActivity.class));
                        break;
                    case R.id.navigation_item_12:
                        startActivity(new Intent(MainActivity.this,PrideofJActivity.class));
                        break;
                    case R.id.navigation_item_13:
                        startActivity(new Intent(MainActivity.this,ReligionActivity.class));
                        break;
                    case R.id.navigation_item_14:
                        startActivity(new Intent(MainActivity.this,MoreActivity.class));
                        break;
                    case R.id.navigation_item_15:
                        startActivity(new Intent(MainActivity.this,LogInActivity.class));
                        break;
                }
                return false;
            }
        });
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        drawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (drawerToggle.onOptionsItemSelected(item))
            return true;
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

XML

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinator_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/webView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:itemIconTint="#d20b0d"
        app:itemTextColor="#333"
        app:menu="@menu/navigation_items" />
</android.support.v4.widget.DrawerLayout>

这里有什么问题?没有连接时,我需要怎么做才能显示 toast 消息?

【问题讨论】:

  • 试试我的答案只需添加这两个权限并尝试...

标签: java android android-studio webview toast


【解决方案1】:
if (checkInternetConnection(this)) {
//if internet connection is there the webpage will load.
}

public static boolean checkInternetConnection(Context context) {

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);

NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiNetwork != null && wifiNetwork.isConnected()) {
return true;  // checking whether you are getting internet from Wi-Fi or not
}

NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileNetwork != null && mobileNetwork.isConnected()) {
return true; // checking whether you are getting internet from mobile data or not
}

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
return true;  
}

Toast.makeText(getApplicationContext(), "Internet Connection Not Present",Toast.LENGTH_LONG).show(); // If you are not getting internet then Toast will execute
return false;
}

【讨论】:

    【解决方案2】:

    您需要这些权限.. 如果添加 Internet 还添加 ACCESS_NETWORK_STATE

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

    您的代码运行良好,只需在 AndroidmainFiest 中添加这两个权限

    没有网络时

    什么时候可以上网

    【讨论】:

    • 权限不是我认为的罪魁祸首..如果没有添加权限,那么它的编译时错误
    • 我检查了代码.....同样......在编译时NetworkInfo需要AccesNetwork状态权限否则这个代码很好......没有这个权限代码一些logcat错误与权限
    【解决方案3】:

    试试这个:

    public class MainActivity extends AppCompatActivity {
    
    List item
    
    DrawerLayout drawerLayout;
    ActionBarDrawerToggle drawerToggle;
    NavigationView navigation;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initInstances();
    
        WebView myWebView = (WebView) findViewById(R.id.webView1);
        myWebView.getSettings().setJavaScriptEnabled(true);
    
    
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.setWebViewClient(new WebViewClient());
        Context context = this;
        try {
                if(isConnected()){
    
                     myWebView.loadUrl("http://alokitojhalakati.com");
    
                }else{
    
                     Toast toast = Toast.makeText(MainActivity.this, "No Internet Connection", Toast.LENGTH_LONG);
    
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    }
    
    private void initInstances() {
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        drawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.hello_world, R.string.hello_world);
        drawerLayout.setDrawerListener(drawerToggle);
    
        navigation = (NavigationView) findViewById(R.id.navigation_view);
        navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                int id = menuItem.getItemId();
                switch (id) {
                    case R.id.navigation_item_1:
                        startActivity(new Intent(MainActivity.this,MainActivity.class));
                        break;
                    case R.id.navigation_item_2:
                        startActivity(new Intent(MainActivity.this,NationalActivity.class));
                        break;
                    case R.id.navigation_item_3:
                        startActivity(new Intent(MainActivity.this,Jhalakati.class));
                        break;
                    case R.id.navigation_item_4:
                        startActivity(new Intent(MainActivity.this,RajapurActivity.class));
                        break;
                    case R.id.navigation_item_5:
                        startActivity(new Intent(MainActivity.this,NolcityActivity.class));
                        break;
                    case R.id.navigation_item_6:
                        startActivity(new Intent(MainActivity.this,KathaliaActivity.class));
                        break;
                    case R.id.navigation_item_7:
                        startActivity(new Intent(MainActivity.this,SaradeshActivity.class));
                        break;
                    case R.id.navigation_item_8:
                        startActivity(new Intent(MainActivity.this,EconomicsActivity.class));
                        break;
                    case R.id.navigation_item_9:
                        startActivity(new Intent(MainActivity.this,SportsActivity.class));
                    break;
                case R.id.navigation_item_10:
                    startActivity(new Intent(MainActivity.this,EntertainmentActivity.class));
                        break;
                    case R.id.navigation_item_11:
                        startActivity(new Intent(MainActivity.this,ITActivity.class));
                        break;
                    case R.id.navigation_item_12:
                        startActivity(new Intent(MainActivity.this,PrideofJActivity.class));
                        break;
                    case R.id.navigation_item_13:
                        startActivity(new Intent(MainActivity.this,ReligionActivity.class));
                        break;
                    case R.id.navigation_item_14:
                        startActivity(new Intent(MainActivity.this,MoreActivity.class));
                        break;
                    case R.id.navigation_item_15:
                        startActivity(new Intent(MainActivity.this,LogInActivity.class));
                        break;
                }
                return false;
            }
        });
    }
    
    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        drawerToggle.syncState();
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (drawerToggle.onOptionsItemSelected(item))
            return true;
        int id = item.getItemId();
    
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    public boolean isConnected() throws InterruptedException, IOException
    {
        String command = "ping -c 1 google.com";
        return (Runtime.getRuntime().exec (command).waitFor() == 0);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多