获取所有文件访问权限时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
相关产品推荐
相关产品推荐

