2016-11-14 125 views
0

我試圖讓機器人的當前位置,而無需使用互聯網的位置,我在下面創建的代碼,但不顯示在TextView獲取沒有互聯網

package com.example.ahmed.gbs_location; 

import android.Manifest; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.ActivityCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity implements LocationListener { 
TextView latitude; 
TextView longitude; 

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

    latitude = (TextView) findViewById(R.id.tb1); 
    longitude = (TextView) findViewById(R.id.tb2); 
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     Toast.makeText(MainActivity.this, "Ahmed", Toast.LENGTH_SHORT).show(); 
     return; 
    } 
    else 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 

@Override 
public void onLocationChanged(Location location) { 
    latitude.setText(String.valueOf(d)); 
    longitude.setText(String.valueOf(location.getLongitude())); 
    latitude.setText(String.valueOf((location.getLatitude()))); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) { 

} 

} 

任何值在AndroidManifest.xml這段代碼

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.ahmed.gbs_location"> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

我不知道爲什麼TextView中有經緯度顯示值?

+0

您是在模擬器還是真實設備上測試? –

+0

*但在textview *中不顯示任何值... ...這正是此代碼所做的,因爲根據定義,您沒有權限... – Selvin

回答

1

如果您的targetSdkVersion>22,請嘗試請求運行權限&請求位置更新從onRequestPermissionsResult

對於運行時權限點擊Here

此外,只有在設備設置中啓用位置服務時,您的代碼纔會有效。 由於您既未檢查位置服務狀態,也未請求啓用它。

嘗試使用FusedLocationProviderApi您不必使用intent,請檢查Here