2017-09-24 2 views
0

설정 페이지로 이동하지 않고 장치에서 팝업을 사용하여 장치에서 위치를 활성화하려고합니다. 내가 스택 오버플로에 대한 여러 솔루션을 시도했지만 아무도 내 에뮬레이터 또는 장치 위치를 선회에 작동하지 않는 것.에뮬레이터 위치

OnRequest :

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull 
String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ 

     if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

      permission. its an array becayse it can be multiple permissions 


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


    } 


} 

홈페이지 :

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(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

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


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

} 

매니페스트 :

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

구축 Gradle을 :


내 위치 코드는 다음과 같다 메인 클래스에서
compile 'com.android.support:support-v4:25.0.0' 
compile 'com.google.android.gms:play-services-maps:10.2.4' 
compile 'com.google.android.gms:play-services-location:10.2.4' 

답변

0

이 수정 :

if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION} ,1); 
return; 
}else{ 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0 , 0, locationListener); 
} 
+0

안녕하세요,이 코드를 대체하려고했지만 위치가 내 코드에서 켜지지 않았습니다. 스튜디오와 에뮬레이터를 사용한다면 이것이 가능합니까? –

+0

에뮬레이터에서 GPS를 통해 현재 위치를 가져올 수 없습니다. 장치에서 응용 프로그램을 실행하여 제대로 작동하는지 확인하십시오. –

+0

아아 그래, 난 둘 다 여전히 같은 결과에 대한 프로그래밍 방식으로 켜려면 수없는 시도 했어 –

0

1) 시간이 권한을 실행하고 산들 이전에 출시 된 모든 안드로이드 버전을 갖는 장치에 응용 프로그램을 실행 해보십시오 관련된 코드를 제거합니다. 이렇게하면 문제가 런타임 권한과 관련이 있는지 여부를 알 수 있습니다.

2) 런타임 권한을 구현하려면이 라이브러리를 사용해보십시오. 그것은 매우 간단하고 사용하기 쉽습니다. https://github.com/Karumi/Dexter

관련 문제