快过年了,写个小玩意
下面这个应用涉及到了一些基础东西.
1 http api调用
2 asynctask使用
3 textview 自动匹配
4 string 的spilt的正则表达式
应用截图
........截图传不上来.....
代码贴下边
public class MainActivity extends Activity { public static String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4"; private TextView text; private boolean isshowprogress = false; private List<String> mlist = new LinkedList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.activity_main); this.setProgressBarIndeterminate(isshowprogress); mlist.add("11.22.33.44"); final AutoCompleteTextView ed = (AutoCompleteTextView) this .findViewById(R.id.ipaddr); text = (TextView) this.findViewById(R.id.result); final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, mlist.toArray()); ed.setAdapter(adapter); (this.findViewById(R.id.query)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub final String ip = ed.getText().toString(); if (!checkIpCorrect(ip)) { text.setText("格式错误"); ed.setText(""); return; } adapter.add(ip); text.setText("查询中..."); setProgressBarIndeterminate(true); new myAsyncTask().execute(ip); } }); } class myAsyncTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub String ip = params[0]; return queryLocation(ip); } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub text.setText(result); setProgressBarIndeterminate(false); super.onPostExecute(result); } } private Boolean checkIpCorrect(String ip) { boolean ret = true; String[] ips = ip.split("[.]"); for (String i : ips) { int n = Integer.parseInt(i); if (n < 0 || n > 255) return false; } return ret; } private String queryLocation(String ipaddress) { String url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ipaddress; URL urls; char[] bytes = new char[1024]; // String str = new String(); StringBuffer result = new StringBuffer(""); try { urls = new URL(url); HttpURLConnection con = (HttpURLConnection) urls.openConnection(); con.setRequestProperty("user-agent", userAgent); con.setRequestMethod("GET"); InputStreamReader reader = new InputStreamReader( con.getInputStream(), "utf-8"); reader.read(bytes); String str = String.valueOf(bytes); System.out.println("======str= " + str); JSONObject json = new JSONObject(str.toString()); JSONObject data = json.getJSONObject("data"); StringBuffer country = new StringBuffer(data.getString("country")); StringBuffer city = new StringBuffer(data.getString("city")); result = country.append("-").append(city); // InputStream input = urls.openConnection().setRequestProperty("", // newValue)getInputStream(); System.out.println("======str= " + str + "=country===" + country); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result.toString(); // HttpURLConnection } }