2014-01-06 46 views
0

我的應用程序需要根據內部計算的某個時間間隔來查找當前位置。它每次都會有所不同。在當前位置檢查互聯網和GPS都關閉時,它應該向用戶顯示一個警報,並將用戶帶到設置頁面。一旦用戶打開GPS,它應該再次調用檢查當前位置的方法。 但有什麼辦法可以讓我們觸發用戶在進入設置頁面後實際打開了GPS?如何在android中以編程方式更改系統設置?

回答

0

我最近不得不做這個EXACT相同的任務(當用戶把他們的LOCATION設置爲ON時,用一些代碼做出響應),並且我得到了奇妙的效果(儘管與其他用戶的回答方式不同) - 儘管他們的方法也可以工作..但大致根據我的方法,在您的情況下,我只需使用Intent在Java代碼中即時註冊BroadcastListener(需要時)。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

和(假設你已經在這種或那種方式註冊的BroadcastReceiver的話),東西沿着這些線路:裸記住,你會使用類似需要爲相應的permission註冊通過您Manifest.xml文件將被放置在你的接收機:

// START OF onReceive METHOD FOR RECEIVER 
@Override 
public void onReceive(Context context, Intent intent) { 

    boolean isGpsEnabled; 
    boolean isNetworkEnabled; 

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

    isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
    isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 



    // PRIMARY RECEIVER RESPONSE (FOR "PROVIDERS_CHANGED" INTENT-FILTER) 
    if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { 

     Toast.makeText(context, "GPS Enabled: " + isGpsEnabled + " NetworkLocation Enabled: " + isNetworkEnabled, Toast.LENGTH_LONG).show(); 

     // START ANOTHER ACTIVITY WHEN GPS IS ENABLED IF YOU WANT 
     if (isGpsEnabled) { 

      Intent startNextActivity = new Intent(context, YourNextActivity.class); 

      // THIS IS NEEDED IF CALLING ACTIVITY FROM OUTSIDE ACTIVITY 
      startNextActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      context.startActivity(startNextActivity); 

     } 

    } 

} 



希望這可以幫助你!
祝福,快樂的編碼!

相關問題