2017-01-12 34 views
1

我試圖讓onRequestPermissionsResult()來觸發,所以我可以開始運行我的應用程序,一旦我收到覆蓋權限。不幸的是,我似乎無法獲取onRequestPermissionsResult(),因爲Toast沒有被髮送。我覺得這與當您要求重疊權限時沒有接受或拒絕對話框的事實有關。相反,您會看到一個切換按鈕。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

這不是你如何使用ACTION_MANAGE_OVERLAY_PERMISSION

首先,startActivityForResult()不會觸發onRequestPermissionsResult()

二,ACTION_MANAGE_OVERLAY_PERMISSION不返回結果。

所以,只需撥打startActivity()您的ACTION_MANAGE_OVERLAY_PERMISSIONIntent。用戶將獲得屏幕截圖中顯示的屏幕(或用戶設備的等效內容)。用戶可以選擇是否切換該開關。稍後,當控件返回到您的應用程序(例如,onStart()onResume())時,您可以call canDrawOverlays()來查看用戶是否授予了該權限。