2017-01-12 5 views
1

オーバーレイパーミッションを受信すると、アプリケーションの実行を開始できるように、onRequestPermissionsResult()を起動しようとしています。残念ながら、トーストが送信されていないときにonRequestPermissionsResult()を呼び出すことはできません。私は、オーバーレイパーミッションを要求するときに、ダイアログボックスを受け入れたり拒否したりしないという事実と関連があると感じています。代わりにトグルボタンが表示されます。あなたがACTION_MANAGE_OVERLAY_PERMISSIONを使用する方法はありませんonRequestPermissionsResultがオーバーレイ許可のためにトリガーされていません

Permission

public class Main extends Activity { 

    private static final int REQUEST_OVERLAY_PERMISSION = 1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
     { 
      Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); 
      startActivityForResult(intent, REQUEST_OVERLAY_PERMISSION); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) 
    { 
     Toast.makeText(this, "onRequestPermissionsResult has been called", Toast.LENGTH_SHORT).show(); 
     //Toast.makeText(this, "RequestCode: " + requestCode + " permissions " + permissions + " grantresults: " + grantResults, Toast.LENGTH_SHORT).show(); 
    } 

    private void runService() 
    { 
     Intent svc = new Intent(this, OverlayShowingService.class); 
     startService(svc); 
     finish(); 
    } 
} 

答えて

2

まず、startActivityForResult()は、onRequestPermissionsResult()をトリガーしません。

第2に、ACTION_MANAGE_OVERLAY_PERMISSIONは結果を返しません。

ACTION_MANAGE_OVERLAY_PERMISSIONIntentにと電話するだけです。ユーザーはスクリーンショットに表示された画面(またはユーザーのデバイスに相当するもの)を取得します。ユーザは、そのスイッチをトグルするか否かを選択することができる。その後、制御がアプリに戻ると(onStart()onResume())、ユーザーがcall canDrawOverlays()にアクセスして許可を受けているかどうかを確認できます。

関連する問題