android - 在外部存储中创建新文件的权限被拒绝

标签 android android-external-storage

如果该文件不存在,我想在外部存储中创建一个新文件。 我已经在 SO 中阅读过类似的问题,并且在我的 list 中拥有 WRITE_EXTERNAL_STORAGE 权限。 在 GenyMotion 模拟器上测试 android 5.1 和 xperia t 与 android 4.3 结果是一样的,我在 file.createNewFile() 上得到“open failed: EACCES (Permission denied)” .我检查了运行时,getExternalStorageState 函数返回值为“MOUNTED”

注意:如果我手动创建文件,我的代码可以完美运行并读取内容,这意味着可以访问外部存储。 尽管我使用 getExternalPublicStorage 将代码写入外部存储的另一个位置以保存捕获的图像,但它工作正常!

File f = Environment.getExternalStorageDirectory();
File config = new File(f, "poinila config" + ".txt");
if (!config.exists()) {
    if (!config.createNewFile()) {
        // toast that creating directory failed
    } else {
        writeDefaultIpPort();
    }
}

编辑: 路径字符串是“/storage/sdcard0/poinila config.txt”

最佳答案

好吧,我认为这是 android 中引入的新安全功能。运行时权限。你必须做这样的事情

           int hasReadExternalStoragePermission = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE);
            if(hasReadExternalStoragePermission != PackageManager.PERMISSION_GRANTED)
                if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE))
                    new AlertDialog.Builder(getContext())
                            .setMessage("You need to Allow access to Images to set a Company Logo")
                            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    requestPermission();
                                }
                            }).show();
                    else
                        requestPermission();
            else
                callChooser();

关于android - 在外部存储中创建新文件的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32481298/

相关文章:

android - 具有自定义评级可绘制对象的 RatingBar 的重力

android - 架构组件改造和 RxJava 2 错误处理

android - 在我的应用程序中显示来自设备的所有图像

android - 手动将文件放入外部存储

android - 如何获取外部存储 SD 卡大小(已安装 SD 卡)?

java - 为什么图像保存不再适用于 API 29

android - 如何以编程方式在 CoordinatorLayout 中滚动 NestedScrollView?

启动画面启动时出现 java.lang.UnsupportedOperationException

java - 从外部存储读取图像文件并放置在 ImageView 中

javascript - Phonegap Android 写入 SD 卡