【发布时间】:2014-03-25 07:00:46
【问题描述】:
我现在已经解决了这个问题
我想像 Play 商店应用一样处理网络连接。
我创建了一个 webview 并想加载一个 URL,比如 www.bing.com
如果网络连接可用 那么 加载网址 别的 使用按钮加载自定义 URL。 结束
-
如果按下此按钮时没有连接,我想尝试再次加载 URL 吗?换句话说,我想在用户连接后再次调用此活动。我该怎么做?
下面是我的代码:
import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import android.support.v4.app.NavUtils; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; public class WebActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); if(isNetworkStatusAvailable (getApplicationContext())) { Toast.makeText(getApplicationContext(), "Loading...", Toast.LENGTH_SHORT).show(); WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.bing.com"); myWebView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(getApplicationContext(), "Internet Connection Unavailable Or " + description , Toast.LENGTH_LONG).show(); Intent errorIntent = new Intent(WebActivity.this, NetworkErrorActivity.class); startActivity(errorIntent); finish(); super.onReceivedError(view, errorCode, description, failingUrl); } }); } else { Toast.makeText(getApplicationContext(), "Internet Connection Unavailable.", Toast.LENGTH_LONG).show(); Intent errorIntent = new Intent(this, NetworkErrorActivity.class); startActivity(errorIntent); finish(); } // Show the Up button in the action bar. setupActionBar(); } public static boolean isNetworkStatusAvailable (Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager != null) { NetworkInfo netInfos = connectivityManager.getActiveNetworkInfo(); if(netInfos != null) if(netInfos.isConnected()) return true; } return false; } }
【问题讨论】:
-
只是说,我不认为 android 上的 play store 应用程序正在使用 web 视图。对于您的问题,可能的方法是当网络不可用时,将您的网络视图替换为包含重试按钮的其他视图(如相对布局)。
-
我从昨天开始尝试您的解决方案,但不知何故无法使用 webview 中的按钮。我现在使用以下方法解决了这个问题 - 我用 Intent errorIntent = new Intent(this, NetworkErrorActivity.class); 替换了 else 里面的代码开始活动(错误意图);在我的新活动中,我通过按一个按钮再次调用我以前的活动。终于成功了!!
-
“再次调用我之前的活动”是什么意思?如果你试图开始一个新的活动而不是返回到你以前的活动,那会弄乱你的后台堆栈。
-
我现在已经编辑了我的代码。我在我的 mainActivity 中,我单击了一个将我发送到 webActivity 的按钮。我需要的是当用户没有网络连接时,而不是 webActivity 将他重定向到 errorActivity 说没有可用的网络并向他显示重试按钮。单击此重试按钮时,如果网络可用,则将他发送回 webActivity。我用过完成();避免回栈。您认为这会造成问题吗?