Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用LocationListener android studio 2.3在日志中显示当前位置_Android_Google Maps_Android Logcat_Locationlistener_Currentlocation - Fatal编程技术网

无法使用LocationListener android studio 2.3在日志中显示当前位置

无法使用LocationListener android studio 2.3在日志中显示当前位置,android,google-maps,android-logcat,locationlistener,currentlocation,Android,Google Maps,Android Logcat,Locationlistener,Currentlocation,我正在尝试获取用户的当前位置并在日志中显示它 下面是我的主要活动Java代码 import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationMana

我正在尝试获取用户的当前位置并在日志中显示它

下面是我的主要活动Java代码

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.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

LocationManager locationManager;
LocationListener locationListener;

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

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

    locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {

            Log.i("Location",location.toString());
        }

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

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

    //If the device is running version older than Marshmallow

    if(Build.VERSION.SDK_INT<23)
    {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
    }

    else
    {
        //Checking if it has permission access
        if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
        {
            //ask for permission

            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);


        }
        else
        {
            //we have permission

            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
        }
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
    {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
    }
}
导入android.Manifest;
导入android.content.Context;
导入android.content.pm.PackageManager;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.os.Build;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.v4.app.ActivityCompat;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
公共类MainActivity扩展了AppCompatActivity{
地点经理地点经理;
LocationListener LocationListener;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager=(locationManager)this.getSystemService(Context.LOCATION\u服务);
locationListener=新locationListener(){
@凌驾
已更改位置上的公共无效(位置){
Log.i(“Location”,Location.toString());
}
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
}
};
//如果设备运行的版本早于棉花糖

如果(Build.VERSION.SDK_INT,首先您需要将移动到
LocationListener
之外的
onCreate()


您使用位置服务的方式已过时。请检查:您可以在哪里找到推荐的方式。实际方式是通过Google Api客户端请求位置更新(或最近已知的位置,如果可用)。希望有帮助。实际上,您的代码看起来应该按原样工作。设备上的位置模式设置为什么?我应该将
LocationListener
移动到哪里?仅在ur
MainActivity
类外部
onCreate
但我确实在onCreate外部声明了
LocationListener
是的,您还必须移动I
LocationListener
外部
onCreate
的初始化和方法。请检查我的更新答案。
public class MainActivity extends AppCompatActivity {

LocationManager locationManager;
LocationListener locationListener;

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

   if(Build.VERSION.SDK_INT<23)
    {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
    }

    else
    {
        //Checking if it has permission access
        if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
        {
            //ask for permission

            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);


        }
        else
        {
            //we have permission

            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
        }
    }
}


  locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {

            Log.i("Location",location.toString());
        }

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

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

    .....
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {
        case 1: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);

            } else {
                Toast.makeText(getApplicationContext(), "Please provide permission.", Toast.LENGTH_LONG).show();
            }
            break;
        }
    }
}