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

谷歌游戏机不接受Android11抢占存储manage_external_storage权限

拓拔辰钊
2023-03-14

我的应用程序在10版以下运行良好,但Android11及更高版本不支持外部存储。我的选取器没有选取任何文档文件。但在清单中授予manageexternalstorage权限后,googleplaystore没有批准我的应用程序。如果您知道所有文件访问权限的替代解决方案,请提供帮助。

共有1个答案

岑俊明
2023-03-14

像下面这样尝试。根据需要创建全局变量或根据需要重构。这是在Android 11上测试的。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />



private void OpenCamera() {

        try {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            File photoFile = null;
            try {
                photoFile = createFile();
            } catch (Exception ex) {
                // Error occurred while creating the File
            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                Uri photoURI = FileProvider.getUriForFile(getActivity().getApplicationContext(), getActivity().getApplicationContext().getPackageName() + ".fileprovider", photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(takePictureIntent, 3);
            }
            //   }
        } catch (Exception e) {
        }

    }

 private File createFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(imageFileName,  /* prefix */".jpg",         /* suffix */storageDir      /* directory */);

        // Save a file: path for use with ACTION_VIEW intents
        ImageLoc = image.getAbsolutePath();

        return image;


    }



// Open Gallery
    private void OpenGallery() {

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Image"), 1);
    }




// onActivityResult handles gallery pics, camera pics and pdf.
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {

                if (data.getData() != null) {

                    try {
                        Uri imageUri = data.getData();
                        File file = new File(Path_from_Uri.getPath(getActivity(), imageUri));

                    } catch (Exception e) {
                        Toast.makeText(getActivity(), "Please Select Image from Gallery", Toast.LENGTH_LONG).show();
                    }

                }

            }
        } else if (requestCode == 3) {

            try {
                File file = new File(ImageLoc);
              
            } catch (Exception e) {
                Log.d("TAG", e.toString());
            }
        }


    }
 类似资料:
  • 我有一个具有统一访问控制的Google云存储桶,我在权限中添加了“诱惑者”。它说该对象是公共的,但当我尝试打开链接时,仍会收到此消息:“匿名调用方没有storage.objects.get access to the Google Cloud storage object”错误代码为“401”。我希望任何用户都能够访问该链接。我该怎么做?提前谢谢! 向你问好本

  • 问题:我的客户端需要访问应用程序信息,如安装、卸载和响应应用程序用户评论。他们访问谷歌播放控制台来管理上面的信息,但他们是计算机外行,通过访问谷歌播放控制台,他们可以运行不受欢迎的设置,甚至从谷歌播放控制台删除应用程序。 解决方案:为他们创建一个门户网站,以便他们仅查看特定信息(安装、卸载和响应应用程序的最终用户评论)。 怀疑:我要开发的门户需要使用什么API来显示信息(安装、卸载和回答最终用户评

  • 我真的很难连接谷歌存储。所有我需要的是能够上传PDF文件到一个桶,我已经在谷歌存储控制台创建。文档似乎到处都是,缺少PHP代码的简单示例。以下是我到目前为止所做的: 已安装云存储 根据谷歌的要求增加了账单。启用云存储API。创建项目并添加了一个桶。 尝试使用以下示例: 不断出错

  • 我知道可以使用谷歌API视觉在网上找到类似的图片。我的目标是根据我的图像数据库找到类似的图像。我不想在网上看到类似的图片。 可能吗? 如果是,你能给我一些链接或建议吗? 谢谢

  • 我有一个应用程序发布到谷歌游戏控制台进行内部测试,也就是说,我只希望这个应用程序对某些用户可用。以下是该应用程序的当前摘要; 注意,这是我“尝试”的第二个版本,看看是否会有任何不同;我首先上传了一个。AAB文件,然后在最新版本中我上传了。APK文件。 下面是我发送给测试人员的链接; 问题是,当测试人员点击链接时,他们会选择“程序”,并可以选择在谷歌play上下载。当他们点击该链接时,要么是无限加载