2016-04-11 18 views
0

AndroidアプリケーションでGPSを設定する必要があります。私はアプリのクラッシュ(IF)からの復帰を削除した場合perrmision(gps)が機能を停止する必要があります

locationManager = (LocationManager) getSystemService(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) 
    { 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION); 
     return; 
    } 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

:しかしfuncionのrequestLocationUpdatesは、このようにチェックperrmisionが必要。リターン関数を置くと、requestLocationUpdatesは呼び出されません!

どのように修正しますか?

答えて

2

requestLocationUpdatesの直後には、の後にrequestPermissionsと電話をかけてはいけません。

requestPermissionsあなたの活動に実装する必要があり、「これは」(アクティビティ)リスナー

で、非同期呼び出しです:そのfonctionチェックで

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     //check if all the grantResult are equal to PackageManager.PERMISSION_GRANTED 
} 

を許可が受け入れられた場合TRUEの場合は、requestLocationUpdatesを呼び出します。

+0

私のコードにonRequestPermissionResultがあります。しかし、私が.requestLocationUpdatesをPERMISSION_GRANTEDセクションに移動すると。もう一度私はエラーチェックperrmisionを取得する/ – user6145907

+0

慎重にドキュメントに従っている場合は間違いをすることはできません:http://developer.android.com/training/permissions/requesting.html –

関連する問題