2017-08-03 64 views
0

我有一個應用程序,我想通過電子郵件發送我的實際座標。將GPS座標放在變量中

打開一個電子郵件客戶端的代碼如下:

final Button button = (Button) findViewById(R.id.addbutton); 
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

      //Funktion aufrufen, aber ausserhalb definieren 

     Intent i = new Intent(Intent.ACTION_SENDTO); 
     //i.setType("message/rfc822"); 
     i.setData(Uri.parse("mailto:")); 
     i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
     i.putExtra(Intent.EXTRA_SUBJECT, "subject of email"); 
     i.putExtra(Intent.EXTRA_TEXT , "body of email"; 
     try { 
      startActivity(i); 
     } catch (android.content.ActivityNotFoundException ex) { 
      Toast.makeText(MapsActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
     } 

    } 
}); 

button喜歡這個工作正常。

現在我想我可以用實際的latitude定義兩個變量,而另一個用當前的longitude

爲此,我必須得到實際座標。

所以我的問題是:我怎麼能把我目前的GPS座標在一個電子郵件。

並請:保持代碼儘可能的簡單:)

編輯:

我有這樣的一個:(我真的不明白)

public void getLocation() { 
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 

,這一次:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    getLocation(); 
} 

@Override 
public void onLocationChanged(Location location) { 
    double latitude = location.getLatitude(); 
    double longitude = location.getLongitude(); 

    location_lat = latitude; 
    location_long = longitude; 
} 

Error I'm getting. All three Errors are in line 77

+0

的可能的複製[如何獲得Android的GPS定位(https://stackoverflow.com/questions/16498450/how-to-get-android-gps-location) – dfour

+0

,但我怎麼能整合我的郵件?我只是在「電子郵件正文」後面添加了+緯度。它顯示的文字,但不是號碼 – MrHarrison

+0

你有GPS座標? –

回答

0

此權限添加到清單(API版本< 23)

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

聲明兩個變量來存儲的座標和位置的一個變量

Location location; 
double latitude; 
double longitude; 

取代你的getLocation()方法與此

public void getLocation(){ 
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
    if (locationManager != null) { 
     try { 
      location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     } catch (SecurityException e) { 

     } 
     if (location != null) { 
      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 
     } 
    } 
} 

獲得座標後,將其傳遞到電子郵件正文中。

... 
i.putExtra(Intent.EXTRA_TEXT , "Longitude "+longitude+", Latitude "+latitude); 
... 
+0

我怎麼能通過它們?如果我插入你的代碼,有這麼多的紅色:) – MrHarrison

+0

做導入導入android.location.LocationManager包 –

+0

如果你使用API​​ 23或以上請求位置權限動態 –