簡體   English   中英

ICS Android以編程方式啟用gps?

[英]ICS Android enable gps programmatically?

我知道這個問題在這里有很多問題,但只是想知道自從ICS發布以來,是否有辦法以編程方式啟用gps?

我正在嘗試啟用gps並將設備的位置發送到電子郵件,應用程序將在收到短信時啟動。

有沒有辦法以編程方式啟用gps?

我希望不會,因為這將是一個隱私缺陷。 AFAIK,允許惡意軟件以編程方式啟用GPS的所有已知漏洞現已關閉。

我正在嘗試啟用gps並將設備的位置發送到電子郵件

用戶控制是否啟用GPS。

正如馬克所說,我當然希望不要因為用戶想要關閉的東西當然不是一件好事;-)

你當然可以要求用戶這樣做(你可能已經找到了,但是這里的參考是一種從記憶中這樣做的一種平凡的方式)

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並獲得新坐標或連接到無線網絡時,最后的已知位置將會改變。 我想你可以編寫一個后台服務,每隔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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM