You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取所有文件访问权限时onActivityResult的intent为何始终为空?

问题:请求全文件访问权限时无法在onActivityResult获取传递的requestId

在请求全文件访问权限时,希望通过Intent向onActivityResult传递额外数据(即使用户未授权),但始终得到resultCode=0且Intent data为空的结果,核心问题是无法获取requestId,即便权限未授予也需要拿到该值。

启动活动的代码

public void grantFilePermission(final String requestId) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        try {
            intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
            intent.addCategory("android.intent.category.DEFAULT");
            intent.setData(Uri.parse(String.format("package:%s", mContext.getApplicationContext().getPackageName())));
        } catch (Exception e) {
            intent = new Intent();
            intent.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
        }
        intent.putExtra("requestId", requestId);
        mContext.startActivityForResult(intent, 2296);
    } else {
        ActivityCompat.requestPermissions(mContext, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
    }
}

注:ActivityCompat.requestPermissions部分与当前问题无关,mContext已定义为FullscreenActivity。

onActivityResult方法代码

void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 2296 && data != null) {
        String requestId = data.getStringExtra("requestId");
    }
}

更新

正如@CommonsWare所说,ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION不会返回结果,即便能返回,startActivityForResult中传入的Intent也不会和onActivityResult收到的Intent一致。目前已通过哈希表(以请求码为键、requestId为值)的方法作为变通方案传递requestId。


内容的提问来源于stack exchange,提问作者Zoli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:27:24