android 6 - 打开失败 : ENOENT (No such file or directory)

标签 android

创建新文件时,出现上述错误。此代码适用于 Android 4.4 版本。我正在 6.0.1 设备上进行测试并收到此错误。我在 list 文件中有写入权限,在创建文件之前尝试 mkDirs() ,仍然是同样的问题。这是代码 fragment :

File newFile = new File(localFilePath);
        try {
            String abc = null;
            abc = Environment.getExternalStorageState();
            if(!newFile.exists()) {
                newFile.mkdirs();
                newFile.createNewFile();
            }
        } catch (IOException e1) {
            e1.printStackTrace();
            return false;
        }

externalStoragState 返回为“已安装”。存储位置为/storage/emulated/0/teSTLocation/filename..

最佳答案

您必须授予 6.0 的运行时权限

private static final int MY_PERMISSIONS_REQUEST_STORAGE = 1;
 private String[] storage_permissions =
            {
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE
            };
    if ((int) Build.VERSION.SDK_INT >= 23) {
                    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

                        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                                android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
                                builder.setMessage("To get storage access you have to allow us access to your sd card content.");
                                builder.setTitle("Storage");
                                builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        ActivityCompat.requestPermissions(OmniSalesHubDrawerActivity.this, storage_permissions, 0);
                                        onContactsClick();
                                    }
                                });

                                builder.show();
                            } else {
                                ActivityCompat.requestPermissions(this, storage_permissions, 0);
                                onContactsClick();
                            }
                        } else {
                            ActivityCompat.requestPermissions(DrawerActivity.this,
                                    storage_permissions,
                                    MY_PERMISSIONS_REQUEST_STORAGE);
                            onContactsClick();
                        }

                    }
                }

关于android 6 - 打开失败 : ENOENT (No such file or directory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38832929/

相关文章:

java - Android Studio 按钮命令

java - Android Studio 中的文本重复器

android - 尝试将代码从 GitHub 导入 Android Studio

android - Browser.EXTRA_APPLICATION_ID 在 ICS 中不起作用

Android 内存泄漏 : Multiple instances of activity in multiple threads

java - android - 回收适配器未出现在 View 寻呼机中

Android JSONObject.getString() 打乱大数

android - picasso 不能容忍空字符串 URL?

Android 在 onPause() 中使用 finish() 销毁 Activity

android - Android HttpClient 的 SSL 连接重用