2015-12-12 12 views
6

ユーザに許可ダイアログが表示されているかどうかをプログラムで判断する方法を教えてください。Android Mは許可ダイアログが表示されているかどうかを検出します

+0

許可ダイアログを検出する簡単な方法はありません私の知る限り、画面には見えかではありません。ハックで<あなたは画面のUIダンプを取って、その後、その許可ダイアログを見つけることができます> – dex

答えて

0
@Override 
protected void onStart() { 
    super.onStart(); 
     ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
     ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 
     if ("com.android.packageinstaller.permission.ui.GrantPermissionsActivity".equals(cn.getClassName())){ 
      //permission dialog is displayed 
     } 
}` 

`

+0

私はちょっと遅いですが、私はちょうどこれを試して、それは動作します!私はブーリアンフラグを使用してこれをやっていましたが、あなたのソリューションも便利です。ありがとう – ThanosFisherman

+0

getRunningTasks()は廃止されましたので、このソリューションは将来的には実行可能ではない可能性があります。 –

1

権限ダイアログは、アクティビティスタックの上に置かれるアクティビティです。したがって、requestPermission()メソッドを呼び出すと、Activityの実装ではPackageManagerにこのアクティビティダイアログを開始するインテントを作成するように求められます。この意図はACTION_REQUEST_PERMISSIONSactionです。

おそらく、アクティビティスタックの変更をリッスンし、アクティビティインテントにACTION_REQUEST_PERMISSIONSアクションがあるかどうかを確認する必要があります。私はあなた自身を試していないので、実行中のタスクを取得するとあなたにこのアクティビティが表示されるかどうかはわかりません。

関連する問題