ICS Android以编程方式启用gps?

时间:2012-04-24 17:24:59

标签: android gps location

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

我正在尝试启用gps并将设备的位置发送到电子邮件,应用程序将在收到短信时启动。

4 个答案:

答案 0 :(得分:11)

  

有没有办法以编程方式启用gps?

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

  

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

用户控制是否启用GPS。

答案 1 :(得分:4)

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

你当然可以要求用户这样做(你可能已经找到了,但是这里的参考是从内存中这样做的一种简单的方法)

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);  
}

答案 2 :(得分:3)

要让用户启​​用GPS,请查看此link

下面是一个函数的内部结构,它试图按降序精度顺序获取最后一个已知的GPS位置。如果用户未启用GPS,则无法启用它。您可以做的最好的事情是抓住最后一个已知位置,或者提示他们启用GPS。每当用户在另一个应用程序中使用GPS并获得新坐标或连接到无线网络时,最后的已知位置将会改变。我想你可以编写一个后台服务,每隔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;

答案 3 :(得分:0)

您必须要求用户提供权限:

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