2016-11-14 4 views
0

せずに場所を取得し、私はインターネットを使用せずにAndroidの現在位置を取得しようと、私は以下のコードを作成しますが、このコードにAndroidManifest.xmlTextViewインターネット

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) { 

} 

} 

<?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を使用してください。意図を使用する必要はありません。Hereをチェックしてください。