AndroidStudio TextViewに文字を表示
http://saki0n.blogspot.jp/2013/04/android-webview.html
上記のサイトを参考にAndroidStudioにてWebViewを使いステータスコード(404や500など)を取得しようとしているのですが、多分HttpStatus.SC_OK
がステータスコードの部分で、それと比較しているres.getStatusLine().getStatusCode()
の部分が200という数字だと思うのですが、これをtextViewに表示したりすることはできますか?
if文の中で
textView.setText(res.getStatusLine().getStatusCode());
とコードを書くとアプリが落ちてしまいます。
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.webView);
textView = (TextView) findViewById(R.id.textView);
//myWebView.setWebViewClient(new WebViewClient());
myWebView.setWebViewClient(new WebViewClient() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (!url.matches("https?://[\\w\\.\\-]+(/.*)?")) {
return super.shouldInterceptRequest(view, url);
}
HttpGet req = new HttpGet(url);
DefaultHttpClient client = new DefaultHttpClient();
String mimeType = null, encoding = null;
byte[] data = null;
try {
HttpResponse res = client.execute(req);
// ここでステータスコードを取得できるよ!
if (HttpStatus.SC_OK == res.getStatusLine().getStatusCode()) {
HttpEntity entity = res.getEntity();
Header mimeHeader = entity.getContentType();
textView.setText(res.getStatusLine().getStatusCode());
if (null != mimeHeader) mimeType = mimeHeader.getValue();
Header encodingHeader = entity.getContentEncoding();
if (null != encodingHeader) encoding = encodingHeader.getValue();
data = EntityUtils.toByteArray(entity);
}
} catch (Exception e) {
String msg = e.getMessage();
Log.e(this.getClass().getSimpleName(), (null != msg) ? msg : "");
} finally {
req.abort();
client.getConnectionManager().shutdown();
}
InputStream stream = new ByteArrayInputStream(data);
return new WebResourceResponse(mimeType, encoding, stream);
}
});
myWebView.loadUrl("https://www.google.com/");
}
}