如何解决在公共LocationResult之外访问字符串信息
| 我有如下脚本,从LocationResult获取网址以在httppost中使用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());
}
我认为这并非难事。
解决方法
我的建议是尝试使用公共字符串...希望能有所帮助。
, 在上一个问题之后:
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.
}
并从gotLocation()
中称呼为
TimsList.this.postURL (\"http://mytimmies.myfunhouse.net/app_main_list.php?lat=\" +
location.getLatitude() + \"&long=\" + location.getLongitude());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。