Android:如何在用户授予权限后让您的应用保持有效状态?

时间:2017-06-12 10:46:52

标签: android permissions

我正在努力解决一个小问题。我是Android应用程序开发的新手,所以如果它看起来很傻,请原谅我的问题。

当我启动我的应用程序时,我要求用户授予权限,此时我得到一个对话框,用于在我的应用程序之上请求权限。但是,当我通过按"允许"来授予对权限的访问权限。然后我的应用程序进入后台,然后我必须重新启动我的应用程序。

我想知道在用户通过按下"允许"来授予权限后,将焦点返回到我的应用的正确方法是什么?按钮,以便我不必再次手动重新启动应用程序?

我的获得许可的代码如下:

    if (ActivityCompat.checkSelfPermission(MainActivity.this, READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

        Log.e("Camera", "Permission to READ_EXTERNAL_STORAGE is not granted, let's ask user");
        ActivityCompat.requestPermissions(MainActivity.this, new String[]{READ_EXTERNAL_STORAGE}, 1);
    }else {
        Log.e("Camera", "Permission to READ_EXTERNAL_STORAGE is already granted, let's find out pictures");
        File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath());
// Going to get no of pictures available in the DCIM directory.
        get_no_of_pictures(CameraDirectory);
    }
    Log.e("uEarn.Camera", "Finishing the CameraPhotos app");
    finish();
}

}

1 个答案:

答案 0 :(得分:0)

只需删除finish();,它就会保留在同一页面中。

但是您可以在onRequestPermissionsResult中执行更多操作,如下所示。

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == 1) {
            if (permissions != null) {

                for (int i = 0; i < permissions.length; i++) {
                    if (Manifest.permission.READ_EXTERNAL_STORAGE.equalsIgnoreCase(permissions[i])
                            && (grantResults[i] == PackageManager.PERMISSION_GRANTED)) {
                        File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath());
// Going to get no of pictures available in the DCIM directory.
                        get_no_of_pictures(CameraDirectory);

                    }
                }
            }
        }

    }