【问题标题】:Outputting the location to the sms将位置输出到短信
【发布时间】:2013-04-30 18:20:19
【问题描述】:

我正在尝试将从 gps/网络接收到的位置输出到短信中。我尝试使用地理编码并使用 try catch 作为列表,但我需要帮助才能将 getAddressLine 输出到 Button 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 上显示意图的输出。

【问题讨论】:

  • 如果我使用 locationmanager.toString() 我得到一个输出 android.location.LocationManager@44ee7718。我想显示像 Los Angeles, CA 90501 这样的输出。

标签: java android android-intent android-location


【解决方案1】:

您在 try/catch 块中本地创建 geo 变量:您需要将其移动到某种全局变量,因此当您单击按钮时,geo 变量实际上存在。

如果你这样做(并且如果你的 Geocoder 实例工作正常),那应该对你有用。

【讨论】:

  • 感谢您的回答,我开始使用 Geocoder gc = new Geocoder(this, Locale.getDefault());列表 地址 = null;尝试{地址 = gc.getFromLocation(lat, lon, 1); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } 地址地址=addresses.get(0);最终字符串广告 = address.getAddressLine(0);当我将广告放入 putExtra 时,它没有给我任何错误,但应用程序无法运行......还有其他想法吗?
  • 不运行?它在 Android 日志文件中产生什么错误?它会因异常而崩溃吗?
  • 对不起,我是 android 编程新手。当我运行模拟器并运行我的应用程序时,它给了我一个错误,应用程序意外停止。请再试一次。而且我没有在代码中看到任何错误...我如何看到错误?
  • 它显示如下... 05-07 17:59:39.279: W/dalvikvm(278): threadid=1: 线程以未捕获的异常退出 (group=0x4001d800) 05-07 17: 59:39.299:E/AndroidRuntime(278):致命异常:主要 05-07 17:59:39.299:E/AndroidRuntime(278):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.sd/com .example.sd.MainActivity}:java.lang.NullPointerException 05-07 17:59:39.299:E/AndroidRuntime(278):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
  • 所以,你有一个不同的错误:你需要查找 NullPointer 引用的行号并修复它,然后才能继续。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2015-04-08
  • 2021-08-27
  • 2011-03-07
相关资源
最近更新 更多