我正在努力解决一个小问题。我是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();
}
}
答案 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);
}
}
}
}
}