ICS Android以编程方式启用gps?

我知道这个问题在这里被问了很多,但只是想知道自ICS发布以来,有没有办法以编程方式启用gps

我试图启用GPS和设备的位置发送到一个电子邮件,应用程序将开始收到短信时。

  • 从坐标获取国家?
  • 计算build筑物内的距离
  • Android上的DGPS更正
  • 无法parsing符号ACCESS_FINE_LOCATION
  • 在Android中同时使用GPS和networking提供商
  • 我怎样才能得到我的android应用程序的可怕的WRITE_SECURE_SETTINGS权限?
  • 从GPS坐标计算平均速度的最佳实践
  • 如何计算地图中不同标记的距离,然后选取最less的一个
  • 有没有办法以编程方式启用gps?

    我希望不会,因为这将是一个隐私的缺陷。 AFAIK,所有已知的允许恶意软件以编程方式启用GPS的漏洞现在已经closures。

    我试图启用gps并将设备的位置发送到电子邮件

    用户控制GPS是否启用。

    正如马克所说的那样,我当然希望不要因为把用户想要的东西关掉,当然不是一件好事情;-)

    你当然可以要求用户这样做(你可能已经find了,但是这里的参考是一个简单的方法)

     LocationManager L = (LocationManager) getSystemService(LOCATION_SERVICE); if (!L.isProviderEnabled(LocationManager.GPS_PROVIDER)) { Intent I = new Intent( android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(I); } 

    要求用户启用GPS,请查看此链接

    下面是一个函数的内部,试图以降序的精度获取最后一个已知的GPS位置。 如果用户没有启用GPS,则无法启用。 你可以做的最好的是抓住最后一个已知的位置,或提示他们启用GPS。 每当用户在另一个应用程序中使用GPS并获得一个新的坐标,或者连接到一个无线networking,最后一个已知位置将会改变。 我想你可以写一个后台服务,每5-10分钟轮询一次这个数据并发送给你。 虽然,我不同意你似乎正在使用这个应用程序的方向。 大声笑。 科学!

     LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); Criteria crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_FINE); String provider = lm.getBestProvider(crit, true); Location loc = lm.getLastKnownLocation(provider); if(loc){ return loc; } lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_COARSE); provider = lm.getBestProvider(crit, true); loc = lm.getLastKnownLocation(provider); if(loc){ return loc; } lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); crit = new Criteria(); crit.setAccuracy(Criteria.NO_REQUIREMENT); provider = lm.getBestProvider(crit, true); loc = lm.getLastKnownLocation(provider); return null; 

    您必须要求用户许可:

     Intent gpsOptionsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(gpsOptionsIntent);