当前位置: 首页 > 知识库问答 >
问题:

在通过ActivityResultLauncher授予权限后,我不断得到0作为结果代码

姬天逸
2023-03-14

我想创建一个功能,将用户移动到应用程序设置,这样他就可以手动授予一些权限。我已经做到了这一点,但不知何故,每当我回到应用程序,在授予所需的权限后,我都会记录0结果代码。为什么?

on创建

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mLocationPermissionResult = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    Log.i(TAG, "onActivityResult: "+result.getResultCode());
                    Log.i(TAG, "onActivityResult: "+result.getData());
                    if (result.getResultCode() == Activity.RESULT_OK){
                        Toast.makeText(MainActivity.this, "Hi!", Toast.LENGTH_SHORT).show();
                    }
                }
            }
    );
}

打开应用程序设置

在用户拒绝权限后,将触发此方法

private void openAppSettings(){
    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    Uri uri = Uri.fromParts("package", getPackageName(), null);
    intent.setData(uri);
    mLocationPermissionResult.launch(intent);
}

日志

授予所有所需的权限并返回应用程序后

2022-07-06 17:02:20.380 20693-20693/com.example.XI/MainActivity: onActivityResult: 0

2022-07-06 17:02:20.380 20693-20693/com.example.XI/MainActivity: onActivityResult: null

共有1个答案

高和通
2023-03-14

为什么?

这是预期的行为。没有结果。并非所有的意图都是为了返回结果而设计的。并且该意图被记录为没有输出。

 类似资料:
  • 如果我把我的Applescript给另一个人,他们将不得不手动允许Applescript控制他们的计算机进入系统首选项,点击安全 如果没有添加applescript以便它可以控制,我会得到错误,“脚本编辑器不允许辅助访问。”

  • 我已经创建了自己的android。这样我就可以使用隐藏的API调用“DisplayManager.connectWifiDisplay()”。 当我运行应用程序并调用该方法时,在通过Wifi Direct连接到显示器后, 我得到以下例外: java.lang.SecurityException:连接到wifi显示器所需的权限:用户10105和当前进程都没有android.Permission.CO

  • 我有一个针对SDK28的Android应用程序,所以我有处理的权限。我检查是否设置了,但当Exoplayer尝试读取文件(我验证该文件确实存在)时,我看到 com.google.android.exoplayer2.upstream.filedatasource$filedatasourceException:java.io.fileNotfoundexception:/storage/emula

  • 我们必须在我的客户项目中集成OAuth2.0授权代码授予。目前,该应用程序使用本地登录页面。我们需要删除该页面,并将未登录的用户重定向到AS登录页面,。在AS end成功登录后,我们将被重定向到配置的。此时,我的客户端应用程序将如何知道用户已在AS登录?如何在客户端维护会话?另外,我需要用和访问令牌交换auth代码,并将其用于后续的服务器API调用。那么如何实现这一点并将令牌作为标头发送呢? 应用

  • 本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源

  • http://${host}:${port}/auth/realms/${realm_name}/authz/protection/resource_set 但是我没有看到一个API来CRUD授权策略和权限。 我试图通过protection/resource_setendpoint创建策略,但失败了: