onRequestPermissionsResult

onRequestPermissionsResult

我正试图让onrequestpermissionsresult()触发,以便在收到覆盖权限后开始运行我的应用程序。不幸的是,我似乎无法调用onrequestpermissionsresult(),因为没有发送to as t。我觉得这与当您请求覆盖权限时没有“接受”或“拒绝”对话框有关。相反,您将看到一个切换按钮。

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();
    }
}

最佳答案

这不是你使用ACTION_MANAGE_OVERLAY_PERMISSION的方式。
首先,startActivityForResult()不会触发onRequestPermissionsResult()
其次,ACTION_MANAGE_OVERLAY_PERMISSION不返回结果。
所以,只要在您的startActivity()ACTION_MANAGE_OVERLAY_PERMISSION上调用Intent。用户将获得屏幕截图中显示的屏幕(或用户设备的等效屏幕)。用户可以选择是否切换该开关。稍后,当控件返回到您的应用程序时(例如,onStart()onResume()),您可以call canDrawOverlays()查看用户是否授予了权限。

关于android - 覆盖权限未触发onRequestPermissionsResult,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41603332/

10-10 00:54