0

GPS/ネットワークから受信した位置をSMSに出力しようとしています。ジオコードを使用して、リストに try catch を使用してみましたが、getAddressLine をボタン setOnClickListener に出力するには助けが必要です。これが私のコードです。ありがとうございました。

    LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    //conversion
    Criteria criteria = new Criteria();
    String bp = lm.getBestProvider(criteria, false);
    Location location = lm.getLastKnownLocation(bp);
    double lat = location.getLatitude();
    double lon = location.getLongitude();
    final Geocoder gc = new Geocoder(this, Locale.getDefault());
        try{
            List<Address> address;
            address = gc.getFromLocation(lat, lon, 1);
            Address ad = address.get(0);
                  StringBuffer geo = new StringBuffer();
            geo = geo.append(ad.getAddressLine(0));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    //ends here
    LocationListener ll = new LocationListener(){
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            Log.d("Location", location.toString());
        }
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub
        }
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub
        }
        public void onStatusChanged(String provider, int status,
                Bundle extras) {
            // TODO Auto-generated method stub
        }
    };
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, ll);
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

そして、ボタンのコード

btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent loc = new Intent (Intent.ACTION_VIEW);
            loc.putExtra("sms_body", geo);
            loc.setType("vnd.android-dir/mms-sms");
            startActivity(loc);
        }
    });

インテントのために loc.putExtra に出力を表示したかったのです。

4

1 に答える 1

0

try/catch ブロックでローカルに変数を作成していgeoます。これをある種のグローバルに移動する必要があるためgeo、ボタンをクリックしたときに変数が実際に存在します。

それを行うと(そしてGeocoderインスタンスが正しく機能している場合)、それはうまくいくはずです。

于 2013-05-07T00:00:26.773 に答える