リストビューのAndroidアプリケーションを構築しています。サイトがオフラインかオンラインかをユーザーに伝える配列内のリストから URL がクリックされたときに、メッセージが返されるようにします。私は、ブール値を返すクイック ping によってこれを行っています。私は Java の初心者であり、onListItemClick() から if ステートメントを削除すると、アプリがクラッシュしないため、pinUrl() メソッドを呼び出す方法と関係があることを知っています。
参照用の MainActivity は次のとおりです。
package com.seven.webtools;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
@SuppressLint("UseValueOf")
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
String[] Sites = res.getStringArray(R.array.Sites);
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Sites));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// Get the selected url
super.onListItemClick(l, v, position, id);
Object o = this.getListAdapter().getItem(position);
String address = o.toString();
//Ping the address
String Status = "offline";
if (MainActivity.pingUrl(address) == true){
Status = "online";
}
//Return the result
Toast.makeText(this, address + " is " + Status, Toast.LENGTH_LONG).show();
}
@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);
return true;
}
public static boolean pingUrl(final String address) {
try {
final URL url = new URL("http://" + address);
final HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setConnectTimeout(1000 * 10); // mTimeout is in seconds
final long startTime = System.currentTimeMillis();
urlConn.connect();
final long endTime = System.currentTimeMillis();
if (urlConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
System.out.println("Time (ms) : " + (endTime - startTime));
System.out.println("Ping to "+address +" was success");
return true;
}
} catch (final MalformedURLException e1) {
e1.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
}
return false;
}
}
あなたが私を助けることができれば、どうもありがとうございました:)