2016-10-02 19 views
0

アプリが起動すると、このコードが実行され、許可が要求されます。Androidで権限を拒否した後に承諾すると、権限リクエストウィンドウが閉じないのですか?

public void requestPermission() 
{ 
    ActivityCompat.requestPermissions(this, 
      new String[] { android.Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION }, 
      Integer.parseInt(this.getString(R.string.LOCATION_REQUESTCODE))); 
} 

ユーザーは、許可を受け入れるか拒否することができます。次に、次のコードを実行します。

@Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 
    { 
     if(requestCode == Integer.parseInt(this.getString(R.string.LOCATION_REQUESTCODE))) 
     { 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) 
      { 
       // permission was granted 
       // Continue running the application 
      } 
      else 
      { 
       // permission denied 
       Toast.makeText(this, R.string.gps_required, Toast.LENGTH_LONG).show(); 

       // Ask again to accept the permissions 
       requestPermission(); 
      } 
     } 
    } 

要求が拒否されたのであれば、トーストは、ユーザーが(GPS座標が必要とされているため)アプリケーションを実行するために、それを受け入れる必要があるとアプリがユーザーから再び権限を要求示しています。

問題は:拒否すると、ポップアップが再び表示されます。私が5回拒否すれば、私は受け入れたい、私はすべてのポップアップが消える前に5回受け入れをクリックする必要があります。

何が原因で起こりますか?受け入れた後でも許可のポップアップが表示されるのはなぜですか?

答えて

0

は答えを見つけました!

ActivityCompat.requestPermissions(this, 
     new String[] { android.Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION }, 
     Integer.parseInt(this.getString(R.string.LOCATION_REQUESTCODE))); 

私は2つの権限を要求しています:ポップアップが二回に来る理由android.Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATIONはそのためです。 Manifest.permission.ACCESS_FINE_LOCATIONは既にそれを含んでいるので

溶液をandroid.Manifest.permission.ACCESS_COARSE_LOCATIONを除去することでした。

関連する問題