以下是我的代码。 Android工作室没有显示任何错误,但是当我在没有连接的情况下运行应用程序时,它没有显示我的消息..
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消息?
答案 0 :(得分:0)
手机可能已连接到网络,但没有互联网连接。在您的情况下,您只是检查&#39;网络&#39;连接。 这样做
public boolean isInternetAvailable() {
try {
InetAddress ipAddr = InetAddress.getByName("google.com");
return !ipAddr.equals("");
} catch (Exception e) {
return false;
}
}
这也会检查互联网连接。
修改强>: PS:这是一个漫长的待定期待的&#39;适用于Android的API。这是一个用于网络连接的API,但没有用于“互联网连接”
答案 1 :(得分:0)
try this :
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);
}
}
答案 2 :(得分:0)
You need to these permission.. if add Internet also add ACCESS_NETWORK_STATE
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Your code well work just add these two permission in AndroidmainFiest
When no Internet
When have Internet
答案 3 :(得分:0)
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;
}