我有一个带有Web视图的应用程序,可以在第二个活动中加载。该应用程序有两个活动。第二个活动在第一个活动中按下按钮时开始。
我的问题是,我想阻止第二个活动开始并保留在第一个活动上,如果没有互联网连接则显示祝酒词。我的网络检查在第二个活动中完成。
这是我的第一个活动:
public class FirstActivity extends AppCompatActivity {
public void startSecondActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
这是我的第二项活动:
public class SecondActivity extends AppCompatActivity {
private WebView mWebView;
public static boolean checkInternetConnection(Context context) {
ConnectivityManager con_manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (con_manager.getActiveNetworkInfo() != null
&& con_manager.getActiveNetworkInfo().isAvailable()
&& con_manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
if (!SecondActivity.checkInternetConnection(this)) {
Toast.makeText(getApplicationContext(), "No Internet Connection!!!", Toast.LENGTH_SHORT).show();
} else {
mWebView = (WebView) findViewById(R.id.webView);
mWebView.setWebViewClient(new CustomWebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://m.sovran.in/index.php?id=" + token);
}
}
答案 0 :(得分:0)
试试这个:
public void startSecondActivity(View view) {
if (!SecondActivity.checkInternetConnection(this)) {
Toast.makeText(getApplicationContext(), "No Internet Connection!!!", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
答案 1 :(得分:0)
在开始第二次Activity
之前,您需要检查互联网连接。要检查您的互联网连接,请使用以下代码。将函数放在项目的任何类中。这是一个public static
函数,可以从任何地方访问。
public static boolean isConnectionAvailable(Context context) {
if (context == null) return false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return info != null && info.isConnected();
}
现在在FirstActivity
中用此替换函数startSecondActivity
。请注意,您实际上并不需要在View
函数中传递startSecondActivity
。
public void startSecondActivity() {
if(!isConnectionAvailable(this)) return;
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
答案 2 :(得分:0)
试试这个
public class FirstActivity extends AppCompatActivity {
public static boolean checkInternetConnection(Context context) {
ConnectivityManager con_manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (con_manager.getActiveNetworkInfo() != null
&& con_manager.getActiveNetworkInfo().isAvailable()
&& con_manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
public void startSecondActivity(View view) {
if(checkInternetConnection(this))
{
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
else
Toast.makeText(getApplicationContext(), "No Internet Connection!!!", Toast.LENGTH_SHORT).show();
}
正如你所评论的那样。您似乎需要将checkInternetConnection放在公共静态类中并在您的情况下检查两次? 1.一旦启动SecondActivityIntent 2.加载SecondActivity的Web视图时
所以它会像
public class HelperClass{
public static boolean checkInternetConnection(Context context){
// your code for checking internet as you have written
...................................................
....................................
}
}
以这种方式使用
只需致电HelperClass.checkInternetConenction(this)
从任何活动中检查,传递上下文
// -------------------------------------- 以下是你的Classe Hirarchy应该如何
这是静态类
package workgroundspace.gs.com.workgroundspace;
import android.content.Context;
import android.net.ConnectivityManager;
/**
* Created by godslave on 6/21/16.
*/
public class HelperClass {
public static boolean checkInternetConnection(Context context) {
ConnectivityManager con_manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (con_manager.getActiveNetworkInfo() != null
&& con_manager.getActiveNetworkInfo().isAvailable()
&& con_manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
}
我在这里调用静态方法进行互联网状态检查
package workgroundspace.gs.com.workgroundspace;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(HelperClass.checkInternetConnection(this)){
Intent goToOtherActivity = new Intent(this,OtherActivity.class);
startActivity(goToOtherActivity);
}
else
{
Log.d("MainActivity", "no internet");
Toast.makeText(this,"No internte coneection",Toast.LENGTH_SHORT).show();
}
}
}