gpt4 book ai didi

android - 方法中声明的最终静态 bool 变量

转载 作者:行者123 更新时间:2023-11-30 05:03:27 27 4
gpt4 key购买 nike

我有一个相机权限按钮,在按钮点击监听器上我有 2 个主要的以下条件。1:如果获得许可,只需转到相机 Activity ...2:否则检查 2 个进一步的条件(1:我检查(使用 bool 变量)是否在对话框中选中“不再询问权限”然后转到设置....2:否则请求权限)。

在 onRequestPermissionsResult 方法中,我检查了用户是否授予权限然后转到相机 Activity ...否则检查用户是否选中“不再请求权限”设置为真 bool 变量否则显示权限被拒绝。

一切正常,但当我重新启动 Activity 时,它会将 bool 变量设置为 false(现在,如果用户上次可能已经检查了“不要再次请求许可”),它应该将用户带到设置但是第一次点击时不会,点击后(当 bool 变量设置为 true 时)它会起作用。所以我的问题是如何在 onRequestPermissionsResult 方法中设置 bool 变量 final(因此它不会在 Activity 重启时改变)并在 onCreate 方法中使用它(超出范围)。

这里是 onCreate 中的按钮 onclick 监听器代码。

                if (checkPermission())
{

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent, 7);
// Toast.makeText(GalleryImageSelection.this,"CAMERA permission allows us to Access CAMERA app", Toast.LENGTH_LONG).show();

}
else {
if (test){ //test is that boolean variable
Uri packageUri = Uri.fromParts( "package", getApplicationContext().getPackageName(), null );

Intent intent = new Intent();

intent.setAction( Settings.ACTION_APPLICATION_DETAILS_SETTINGS );
intent.setData( packageUri );
intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );

startActivity( intent );
}else {
ActivityCompat.requestPermissions(GalleryImageSelection.this,new String[]{
Manifest.permission.CAMERA}, RequestPermissionCode);

} }

这里是onRequestPermissionsResult方法代码

@Override
public void onRequestPermissionsResult(int RC, String per[], int[] PResult) {

switch (RC) {

case RequestPermissionCode:

if (PResult[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(GalleryImageSelection.this, "Permission Granted, Now your application can access CAMERA.", Toast.LENGTH_LONG).show();

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 7);

} else {
// for (int i = 0, len = per.length; i < len; i++) {
// String permission = per[i];
if (PResult[0] == PackageManager.PERMISSION_DENIED){
boolean showRational =shouldShowRequestPermissionRationale(per[0]);
if (!showRational){
test = true;//test is declared above onCreate for
//scope purpose
}
else if (CAMERA.equals(per[0])) {
Toast.makeText(GalleryImageSelection.this, "Permission Denied, your application cannot access CAMERA.", Toast.LENGTH_LONG).show();

}
}
}

break;
}
}

最佳答案

您可以使用 ActivityCompat#shouldShowRequestPermissionRational在 onRequestPermissionsResult 上

原始答案:Link

关于android - 方法中声明的最终静态 bool 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57800732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com