来自此网址: java.net.URL in android .. newbie question
当我取消注释此行时,我的应用程序开始关闭:
BufferedReader in = new BufferedReader(new InputStreamReader(http.getInputStream()));
我的目标是访问网址。我的意思是获取HTML代码,之后我解析它。首先尝试,在获取图像网址成功(未使用的功能中的示例),但对于正常的网址我卡住了。谢谢你的帮助......
我的完整代码:
public class MainActivity extends Activity {
private ProgressDialog progressDialog;
private Bitmap bitmap = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
final EditText editTexts = (EditText) findViewById(R.id.editText1);
editTexts.setOnKeyListener(new EditText.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) { // If the event is a key-down event on the "enter" button
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) { // Perform action on key press
String name = "Hello " + editTexts.getText();
Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
TextView t = (TextView) findViewById(R.id.textView1);
t.setText(name);
if (checkInternetConenction()) {
// downloadImage("http://www.tutorialspoint.com/green/images/logo.png");
//https://postimg.org/image/5bjco36kl/597f512a/
//downloadImage("http://s10.postimg.org/5bjco36kl/Quotes_Cover_pic14.png"); // works
try {
URL url = new URL("http://www.google.com/humans.txt");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
//int statusCode = http.getResponseCode();
String outdata = "";
String inputLine;
BufferedReader in = new BufferedReader(new InputStreamReader(http.getInputStream()));
//while ((inputLine = in.readLine()) != null)
// outdata += inputLine;
//t.setText(outdata);
//in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
// if(isOnline()) // works !
{
// Toast.makeText(MainActivity.this, "dalam in kondisi OL ?" , Toast.LENGTH_SHORT).show();
// t.setText(name+" boolean bro");
}
}
return false;
}
});
return false;
}
public boolean isOnline() {
ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Boolean res;
res = false;
if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
Toast.makeText(MainActivity.this, "online", Toast.LENGTH_SHORT).show();
// notify user you are online
res = true;
} else if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) {
Toast.makeText(MainActivity.this, "offline", Toast.LENGTH_SHORT).show();
res = false;
// notify user you are not online
}
return res;
}
private boolean checkInternetConenction() {
// Toast.makeText(MainActivity.this, "here", Toast.LENGTH_SHORT).show();
// get Connectivity Manager object to check connection
ConnectivityManager connec = (ConnectivityManager) getSystemService(getBaseContext().CONNECTIVITY_SERVICE);
// string stat = connec.getNetworkInfo(0).getState();
//Toast.makeText(MainActivity.this, "stat"+stat, Toast.LENGTH_SHORT).show();
// Check for network connections
if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) {
// Toast.makeText(MainActivity.this, "here1", Toast.LENGTH_SHORT).show();
Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show();
return true;
} else if (
connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED) {
// Toast.makeText(MainActivity.this, "here2", Toast.LENGTH_SHORT).show();
Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show();
return false;
}
// Toast.makeText(MainActivity.this, "here3", Toast.LENGTH_SHORT).show();
return false;
}
private void downloadImage(String urlStr) {
progressDialog = ProgressDialog.show(this, "", "Accessing data from " + urlStr);
final String url = urlStr;
new Thread() {
public void run() {
InputStream in = null;
Message msg = Message.obtain();
msg.what = 1;
try { in = openHttpConnection(url);
// change start here..
bitmap = BitmapFactory.decodeStream( in );
Bundle b = new Bundle();
b.putParcelable("bitmap", bitmap);
msg.setData(b); in .close();
} catch (IOException e1) {
e1.printStackTrace();
}
messageHandler.sendMessage(msg);
}
}.start();
}
private void downloadImage_(String urlStr) {
progressDialog = ProgressDialog.show(this, "", "Downloading Image from " + urlStr);
final String url = urlStr;
new Thread() {
public void run() {
InputStream in = null;
Message msg = Message.obtain();
msg.what = 1;
try { in = openHttpConnection(url);
bitmap = BitmapFactory.decodeStream( in );
Bundle b = new Bundle();
b.putParcelable("bitmap", bitmap);
msg.setData(b); in .close();
} catch (IOException e1) {
e1.printStackTrace();
}
messageHandler.sendMessage(msg);
}
}.start();
}
private InputStream openHttpConnection(String urlStr) {
InputStream in = null;
int resCode = -1;
try {
URL url = new URL(urlStr);
URLConnection urlConn = url.openConnection();
if (!(urlConn instanceof HttpURLConnection)) {
throw new IOException("URL is not an Http URL");
}
HttpURLConnection httpConn = (HttpURLConnection) urlConn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
resCode = httpConn.getResponseCode();
if (resCode == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return in;
}
private Handler messageHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageBitmap((Bitmap)(msg.getData().getParcelable("bitmap")));
progressDialog.dismiss();
}
};
}