2017-01-20 11 views
1

によって拒否することができる権限が必要です.... 私はこのコードを書く:myPermissionNeededMethodでコールは、私がアンドロイドで位置を取得する必要があるユーザー

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 

      if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) 
        !=PackageManager.PERMISSION_GRANTED) 
      { 
       if(ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)) 
       { 
        Toast.makeText(MainActivity.this,"Comment...",Toast.LENGTH_LONG).show(); 
       } 
       else 
       { 
        ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1); 
       } 
      } 
      else 
      { 
       //Call whatever you want 
       myPermissionNeededMethod(); 
      } 
     } 

    }); 
} 
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode){ 
     case 1: { 
      if((grantResults.length>0) && grantResults[0]==PackageManager.PERMISSION_GRANTED) 
       myPermissionNeededMethod(); 
      else{ 
       // the user deny to giving permission so we ask him again or whatever we need to do ! 
      } 
      return; 

     } 
    } 
} 

()私が書く:

public void myPermissionNeededMethod(){ 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Location location= locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

} 

が、もう一度私はユーザーによって拒否される可能性のあるエラーの呼び出しが必要です.... !!!! 私がmyPermissionNeededMethod()メソッドを使用できない場合、oncreateとonRequestPermissionsResultのelseセクションのコードをコピーする必要があります。

答えて

1

これは誤りではありません。リントの警告です。 Lintは、あなたがmyPermissionNeededMethod()と呼んでいる唯一の場所があなたにこの許可を持っているかどうかを確認していることを確認することはできません。

この方法を作成すると、privateが役立ちます。

そうでない場合は、どこかであなたに(すなわち、赤や黄色のundersquiggleを持っている)に警告を与えているコード内のテキストカーソルを置き、プレスをAlt-Enterキー、および@SuppressLint注釈を追加するクイックフィックスを探しますこの問題について不平を言うのをLintに知らせるために。次に、あなたが既にこの許可を保持していることが確信されたときにmyPermissionNeededMethod()に電話することを確認することはあなた次第です。

関連する問題