2017-05-29 4 views
1

私は、アプリケーションを正しく使用するために必要なすべてのアクセス許可のリストを持つBaseAdapterを持っています。アダプタからのOnResquestPermissionResult

私は、そのうちの1つをonClickした後、許可を要求し、許可されているかどうかを確認します。要求のために

、私は

ActivityCompat.requestPermissions

を使用していますが、私は結果を取得する方法がわかりません。

は、それがユーザーの答えを知っているO

nRequestpermissionsResultCallback

を呼び出すことは可能ですか?

どうすればいいですか?

答えて

0

許可を確認するには(この例では、カメラを使用する権限です):ActivityCompat.requestPermissionsが実行されている場合、対話は、あなたが結果をキャッチすることができた後に、ユーザのために表示されます

int permissionCheck = ContextCompat.checkSelfPermission(this, 
       Manifest.permission.CAMERA); 
    if (permissionCheck == PackageManager.PERMISSION_DENIED) { 
      // permission is not granted yet, let's ask for it 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.CAMERA}, 
        MyActivity.cameraRequestCode); 
    } else { 
      // permission is already granted 
    } 

この様活性のonRequestPermissionsResultをオーバーライドすることによって:

@Override 
    public void onRequestPermissionsResult(int requestCode, 
              String permissions[], int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case MyActivity.cameraRequestCode: { 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        // action when permission granted 
       } else { 
        // action when permission denied 
       } 
       return; 
      } 
     } 
    } 

MyActivity.cameraRequestCodeが静的intで、任意のユニークなint型の値にすることができます。

+0

ご回答ありがとうございますが、アクティビティに含まれていないアダプタでコールバックを実装したいと考えています。代わりに、私がそのメソッドにオーバーライドされていないメソッドを実装しようとすると、その理由は分かりません。 –

+0

悲しいことに、onRequestPermissionsResultは、アクティビティまたはフラグメントでのみオーバーライドできます。アダプターが結果を処理するようにするには、アクティビティー/フラグメントからアダプターに渡す必要があります。 – Archlin

関連する問題