2011-06-10 95 views
0

外訪問字符串信息我有一個腳本如下從LocationResult獲取URL在httppost使用公共LocationResult

public class List extends ListActivity { 

    int ct_id; 
    String[] ct_number = null; 
    String[] ct_address = null; 
    String[] ct_phone = null; 
    String[] ct_fax = null; 
    String[] ct_email = null; 
    String[] ct_city = null; 
    String[] ct_province = null; 
    String[] ct_country = null; 
    String[] ct_pcode = null; 
    String[] ct_lat = null; 
    String[] ct_long = null; 
    String[] ct_distance = null; 
    String[] ct_show = null; 
    String[] ct_listinfo = null; 

    MyLocation myLocation = new MyLocation(); 

    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.timslist); 
     findCurrentLocation(); 

     //check for key to remove ads 
     if(isKeyInstalled(this) == false){ 

      //AdMob Banner 
      LinearLayout parent = (LinearLayout) findViewById(R.id.adveiw); 
      AdView ad = new AdView(this, AdSize.BANNER, "XXXXXXXXXXXXXX"); 
      parent.addView(ad); 
      AdRequest r = new AdRequest(); 
      //r.setTesting(true); 
      r.setTesting(false); 
      ad.loadAd(r); 
     } 

     if(isKeyInstalled(this) == true){ 

     } 

     String result = null; 
     InputStream is = null; 
     StringBuilder sb = null; 
     //http post 
     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("" + infourl + ""); 
      //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection"+e.toString()); 
     } 
     //convert response to string 
     try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      sb = new StringBuilder(); 
      sb.append(reader.readLine() + "\n"); 
      String line="0"; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error converting result"+e.toString()); 
     } 
     //paring data 
     JSONArray jArray; 
     try{ 
      jArray = new JSONArray(result); 
      JSONObject json_data=null; 
      ct_number=new String[jArray.length()]; 
      ct_address=new String[jArray.length()]; 
      ct_phone=new String[jArray.length()]; 
      ct_fax=new String[jArray.length()]; 
      ct_email=new String[jArray.length()]; 
      ct_city=new String[jArray.length()]; 
      ct_province=new String[jArray.length()]; 
      ct_country=new String[jArray.length()]; 
      ct_pcode=new String[jArray.length()]; 
      ct_lat=new String[jArray.length()]; 
      ct_long=new String[jArray.length()]; 
      ct_distance=new String[jArray.length()]; 
      ct_listinfo=new String[jArray.length()]; 
      for(int i=0;i<jArray.length();i++){ 
       json_data = jArray.getJSONObject(i); 
       ct_id=json_data.getInt("location_id"); 
       ct_number[i]=json_data.getString("store_number"); 
       ct_address[i]=json_data.getString("store_address"); 
       ct_phone[i]=json_data.getString("store_phone"); 
       ct_fax[i]=json_data.getString("store_fax"); 
       ct_email[i]=json_data.getString("store_email"); 
       ct_city[i]=json_data.getString("store_city"); 
       ct_province[i]=json_data.getString("store_province"); 
       ct_country[i]=json_data.getString("store_country"); 
       ct_pcode[i]=json_data.getString("store_pcode"); 
       ct_lat[i]=json_data.getString("store_lat"); 
       ct_long[i]=json_data.getString("store_long"); 
       ct_distance[i]=json_data.getString("store_distance"); 
       ct_listinfo[i] = new String (ct_address[i] + "\n" + ct_city[i] + ", " + ct_province[i] + " - " + ct_distance[i] + " Km Away"); 
      } 
     } 
     catch(JSONException e1){ 
      Toast.makeText(getBaseContext(), "No Addresses Found" ,Toast.LENGTH_LONG).show(); 
     } catch (ParseException e1) { 
      e1.printStackTrace(); 
     } 

     setListAdapter(new ArrayAdapter<String>(this,R.layout.listview,ct_listinfo)); 
     ListView lv; 
     lv = getListView(); 
     lv.setTextFilterEnabled(true); 
     lv.setCacheColorHint(Color.TRANSPARENT); 
     lv.setBackgroundColor(Color.TRANSPARENT); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> timslist, View view, 
        int position, long id) { 

       Intent i = new Intent(getApplicationContext(), TimsListMore.class); 

       i.putExtra("ct_number_pass", ct_number[position]); 
       i.putExtra("ct_address_pass", ct_address[position]); 
       i.putExtra("ct_phone_pass", ct_phone[position]); 
       i.putExtra("ct_city_pass", ct_city[position]); 
       i.putExtra("ct_province_pass", ct_province[position]); 
       i.putExtra("ct_country_pass", ct_country[position]); 
       i.putExtra("ct_pcode_pass", ct_pcode[position]); 
       i.putExtra("ct_distance_pass", ct_distance[position]); 

       startActivity(i); 

      } 
     }); 
    } 

    protected boolean isKeyInstalled(Context context) { 
      // the packagename of the 'key' app 
      String proPackage = "XXXXXXXXXXXXXXXXXXXX"; 

      // get the package manager 
      final PackageManager pm = context.getPackageManager(); 

      // get a list of installed packages 
      List<PackageInfo> list = pm.getInstalledPackages(PackageManager.GET_DISABLED_COMPONENTS); 

      // let's iterate through the list 
      Iterator<PackageInfo> i = list.iterator(); 
      while(i.hasNext()) { 
      PackageInfo p = i.next(); 
      // check if proPackage is in the list AND whether that package is signed 
      // with the same signature as THIS package 
      if((p.packageName.equals(proPackage)) && 
       (pm.checkSignatures(context.getPackageName(), p.packageName) == PackageManager.SIGNATURE_MATCH)) 
       return true; 
      } 
      return false; 
     } 

    private void findCurrentLocation() { 
     myLocation.getLocation(this, locationResult); 
    } 

    public LocationResult locationResult = new LocationResult() { 


     public void gotLocation(Location location) { 
      // TODO Auto-generated method stub 
      if (location != null) { 
       String infourl = "http://www.somedomain.com/list.php?lat=" + location.getLatitude() + "&long=" + location.getLongitude(); 

      } 
     } 
    }; 
} 

所以這

String infourl = "http://www.somedomain.com/list.php?lat=" + location.getLatitude() + "&long=" + location.getLongitude(); 

需要進入

String result = null; 
     InputStream is = null; 
     StringBuilder sb = null; 
     //http post 
     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("" + infourl + ""); 
      //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection"+e.toString()); 
     } 

我認爲這不會是一件難事。

回答

0

我的建議是嘗試使用公共字符串...希望這有助於。

0

繼前面的問題:

public LocationResult locationResult = new LocationResult() { 
    String latitude = null; 
    String longitude = null; 

    public void gotLocation(Location location) { 
    if (location != null) { 
     latitude = location.getLatitude() + ""; 
     longitude = location.getLongitude() + ""; 
    } 
    } 

    public String getLatitude() { 
    return latitude; 
    } 
    public String getLongitude() { 
    return longitude; 
    } 
} 

你可以使用它作爲

String location = new String (locationResult.getLatitude() + " " + locationResult.getLongitude()); 

在活動的任何地方。當然,這是非常粗糙的,甚至根本不檢查是否有有效的位置,但它給了你解決這個問題的想法。我相信你真正想要的是與你所問的相反:如果你需要lat和long值發送一個http文章,那麼我會在gotLocation函數中做文章。這樣,你確定你不會發送空值到帖子。創建方法

public void postURL (String urlString) { 
    if (urlString == null) return; 
    HttpPost httppost = new HttpPost(urlString); 
    // whatever else code you have to handle responses, etc. 
} 

,並從whithin在這似乎gotLocation()作爲

TimsList.this.postURL ("http://mytimmies.myfunhouse.net/app_main_list.php?lat=" + 
    location.getLatitude() + "&long=" + location.getLongitude()); 
+0

不得多調用它。也'公共字符串getLatitude(){ 返回緯度; } public String getLongitude(){ return longitude; }'顯示爲未使用的日食 – PsychoDogg 2011-06-10 00:38:24

+0

您是否在活動的某個地方添加了最後一行?這就是你如何使用它。 – Aleadam 2011-06-10 00:47:45

+0

這不會給我想要的結果。我所需要做的就是從LocationResult攜帶lat和long,並在oncreate json url中使用它。也許我沒有解釋它對我來說還是新的android。如果我添加'字符串緯度= null; String Longitude = null;'在public void onCreate(Bundle bundle)之前{'它修復了我的eclipse錯誤,但是傳遞了Null,所以它沒有添加lat和long。 – PsychoDogg 2011-06-10 00:50:18