Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnRequestPermissions未触发覆盖权限的结果_Android - Fatal编程技术网

Android OnRequestPermissions未触发覆盖权限的结果

Android OnRequestPermissions未触发覆盖权限的结果,android,Android,我正在尝试触发onRequestPermissionsResult,以便在收到覆盖权限后开始运行我的应用程序。不幸的是,由于没有发送祝酒词,我似乎无法获得被调用的onRequestPermissionsResult。我觉得这与以下事实有关:当您请求覆盖权限时,没有“接受或拒绝”对话框。相反,您会看到一个切换按钮 public class Main extends Activity { private static final int REQUEST_OVERLAY_PERMISSION

我正在尝试触发onRequestPermissionsResult,以便在收到覆盖权限后开始运行我的应用程序。不幸的是,由于没有发送祝酒词,我似乎无法获得被调用的onRequestPermissionsResult。我觉得这与以下事实有关:当您请求覆盖权限时,没有“接受或拒绝”对话框。相反,您会看到一个切换按钮

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();
    }
}
这不是您使用操作、管理、覆盖权限的方式

首先,startActivityForResult不会触发onRequestPermissionsResult

第二,操作\管理\覆盖\权限不会返回结果


因此,只需在您的操作、管理、覆盖、许可意向上调用startActivity即可。用户将获得屏幕截图中显示的屏幕或用户设备的等效屏幕。用户可以选择是否切换该开关。稍后,当控件返回到您的应用程序(例如onStart、onResume)时,您可以查看用户是否授予了权限。

这是不正确的信息,因为我已经在我的应用程序中使用了一段时间,startActivity会在activityresult上触发,但它会触发一些设备,例如华为!Settings.CandrawOverlyThis在onactivity中不起作用result@Quicklearner:startActivity在activityresult上触发-首先,这不是您的答案所显示的。其次,该问题显示了希望startActivityForResult触发onRequestPermissionsResult的OP。这就是我在回答中提到的,因为这不起作用。startActivity在activityresult上触发,我是说startActivityforResult,这是我的错,不管怎样,它会在activityResult上触发,这是一种检查权限是否被授予或拒绝的方法,就像我在问题中回答的那样。我只是想用这句话来纠正您的错误。请在您的操作上调用startActivity\u Management\u OVERLAY\u权限意图。用户将获得屏幕截图中显示的屏幕或用户设备的等效屏幕,与使用startActivityForResult一样,它将触发onActivityResult,在那里可以处理已批准/已拒绝的任务,而不仅仅是使用StartActivity。您可以尝试我的答案并检查行为,华为手机或小米可能会因其定制操作系统而表现不同,我在测试时实际遇到了这些操作系统