2016-12-16 15 views
1

ユーザが許可しない場合は、他の人に許可を求めないようにします。RxPermissionsで許可されていない場合は、他の人に許可を求めないようにしてください。

例:私は外部記憶装置とカメラの読み取り/書き込みを要求します。ユーザが最初に拒否した場合、ライブラリはカメラの許可を求めます。この場合、カメラの許可は冗長です。

RxPermissions.getInstance(getActivity()).request(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA) 
       .subscribe(granted -> { 
        if (granted) { 
         dispatchCamera(); 
        } else { 
         showError(); 
        } 
       }); 

私はrequestEachを使用することができると思うが、私は、ユーザーがすべての権限を付与した場合、1つの権限が付与されていない場合はアイテムを発するように停止方法を知っているし、また、私は最終的な結果を得るカントいけません。

答えて

3

私はあなたの問題が解決したと思うが、私は同じ問題に遭う他の誰かのために答えるだろう。

takeUntilまたはtakeWhileオペレータrequestEach(必要なストリームの動作によって異なります)が必要です。 TakeUntilは、ストリームからあなたを解除し、あなたに付与された権限、あなたがtakeWhile ==否定し、plsはを使用し、それらのいずれかなしにのみ権限付与イベントを取得したいinclusive.If 許可のいずれかがを拒否されたとのイベントのみをもたらしますオペレータ。 多分このコードでexperementをしなければならないかもしれません。なぜなら、私はこのライブラリをまだ使用していないからです。

ように、コードは次のように次のようになります。

RxPermissions 
     .getInstance(getActivity()) 
     .requestEach(Manifest.permission.WRITE_EXTERNAL_STORAGE, 
     Manifest.permission.READ_EXTERNAL_STORAGE, 
     Manifest.permission.CAMERA) 
     .takeWhile(permission -> permission.granted) 
     //or use take untill if you want to get permission.granted == false event 
     //.takeUntil(permission -> !permission.granted) 
     .subscribe(granted -> { 
     if (granted) { 
      dispatchCamera(); 
     } else { 
      showError(); 
     } 
     }); 
+0

ありがとう!遅くなく良い! – AndroidRuntimeException

関連する問題