ICS Android以编程方式启用gps?
我知道这个问题在这里被问了很多,但只是想知道自ICS发布以来,有没有办法以编程方式启用gps?
我试图启用GPS和设备的位置发送到一个电子邮件,应用程序将开始收到短信时。
有没有办法以编程方式启用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);