> Java > java지도 시간 > Android\의 네트워크 공급자를 사용하여 내 현재 위치를 얻을 수 없는 이유는 무엇입니까?

Android\의 네트워크 공급자를 사용하여 내 현재 위치를 얻을 수 없는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-25 16:31:14
원래의
238명이 탐색했습니다.

Why Am I Unable to Get My Current Location Using Android's NETWORK Provider?

Android에서 현재 위치를 얻는 방법

Android 위치 시스템의 NETWORK 공급자를 사용하여 현재 위치 좌표를 검색하는 데 문제가 있습니다. 다양한 기존 클래스를 구현했음에도 불구하고 여전히 현재 좌표를 얻을 수 없습니다.

문제 분석:

문제는 누락된 기본 개념에 있을 수 있습니다. 다음은 몇 가지 잠재적인 문제입니다.

  • 위치 권한: AndroidManifest.xml 파일에서 필요한 위치 권한을 선언했는지 확인하세요. ACCESS_FINE_LOCATION 및 ACCESS_COARSE_LOCATION 권한이 필요합니다.
  • 위치 제공자: NETWORK 제공자로부터 업데이트를 올바르게 요청하고 있는지 확인하세요. 코드는 LocationManager.NETWORK_PROVIDER를 사용하여 명시적으로 위치 업데이트를 요청해야 합니다.
  • LocationListener: LocationListener 인터페이스를 구현하고 onLocationChanged 메서드를 재정의하는 것은 위치 업데이트를 처리하는 데 필수적입니다.

수정됨 코드:

다음은 잠재적인 문제를 해결하는 수정된 버전의 코드입니다. 문제:

MainActivity.java:

import android.Manifest;
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;

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_FINE_LOCATION = 123;
    private LocationManager locationManager;
    private TextView text;

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

        text = (TextView) findViewById(R.id.texts);

        // Check and request location permission
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_FINE_LOCATION);
        } else {
            initLocationManager();
        }
    }

    private void initLocationManager() {
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        // Request location updates from the NETWORK provider
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        }
    }

    private LocationListener locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {
                text.setText("Lat: " + location.getLatitude() + ", Lon: " + location.getLongitude());
            }
        }

        @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, String[] permissions, int[] grantResults) {
        if (requestCode == REQUEST_FINE_LOCATION && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            initLocationManager();
        }
    }
}
로그인 후 복사

AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.locationtests">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

    </application>

</manifest>
로그인 후 복사

이 업데이트된 코드 주소 NETWORK 공급자를 사용하여 Android에서 현재 위치를 얻는 것과 관련된 가장 일반적인 문제입니다.

위 내용은 Android\의 네트워크 공급자를 사용하여 내 현재 위치를 얻을 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿