2 markdowneide markdowneide 于 2013.08.12 18:00 提问

在外部存储器没有权限创建一个新的文件

我想在外部存储器中创建一个文件,代码如下:

String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)) {
     saveState= true;
     File pPath= Environment.getExternalStorageDirectory();
     if(!pPath.exists()) {
          boolean bReturn= pPath.mkdirs();
          Log.d(TAG, "mkdirs returned: " + bReturn);
     }
     try {
          File pFile= new File(pPath, "output.pcm");
          pFile.createNewFile();
          outputLocation= pFile.getAbsolutePath().toString();
     } catch (IOException e) {
          Log.d(TAG, "Could not create file: " + e.toString());
          saveState= false;
     }
} 

然后调用 createNewFile()时返回

"Could not create file: java.io.IOException: Permission denied"

在 manifest 文件中有 android.permission.WRITE_EXTERNAL_STORAGE。
manifest 中的部分代码:

<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="company.example.sample"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <permission android:name="android.permission.RECORD_AUDIO"></permission>
    <permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></permission>
    <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></permission>

为什么会说在外部存储器没有权限创建一个新的文件呢?

1个回答

Jave_
Jave_   2013.08.12 18:02
已采纳

改成:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission >
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
如何设置UNIX/Linux中新创建目录或文件的默认权限
在unix或者linux中,每创建一个文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,那么这些默认权限是怎么控制的呢? 答案是“umask”权限掩码。一般默认的umask值为022,其最终效果就是新创建的目录权限为755,文件权限为644。所以只要修改了用户的umask值,就可以控制默认权限。   怎么查看当前umask值? umask 0022
Android工具之解决安卓6.0以上版本不能读取外部存储权限的问题
/**      * 解决安卓6.0以上版本不能读取外部存储权限的问题      * @param activity      * @return      */     public static boolean isGrantExternalRW(Activity activity) {         if (Build.VERSION.SDK_INT >= Build.VERS
给一个普通用户有在他的目录下有创建文件的权限
linux 下如何给一个普通用户有在他的目录下有创建文件的权限? 普通用户只能在自己的目录下有创建文件的权限。比如username只能在/home/username 这个目录下有创建目录的权限 当他切换到其他的目录去的时候 比如切换到上一级目录/home下时 就没有创建文件的权限了 现在想知道是怎么给username在其他的目录下 也有创建文件的权限。
创建一个非超级管理员用户,并增加 sudo 权限
1. 添加新用户 ubuntusudo adduser ubuntu系统会提示以下信息:正在添加用户“ubuntu”... 正在添加新组“ubuntu”(1001)... 正在添加新用户“ubuntu”(1001)到组“ubuntu”... 创建主目录“/home/ubuntu”... 正在从“/etc、skel”复制文件... 输入新的 UNIX 口令:(此处大家注意,不是输入你当前用户的密码,而
centos中子目录新生成文件或目录具有与父目录相同权限方法
ACL递归权限 setfacl -m u:用户:权限 -R 目录名  # 目录下的所有文件具有与父目录相同权限 实例: setfacl -m d:u:root:rwx -R /tmp/  #tmp目录下所有与新建文件或目录与tmp相同权限.
linux新建文件权限问题
touch /etc/init.d/httpdchmod 755 /etc/init.d/httpd =================================touch可以新建一个空文件,可以修改文件的创建时间。比如:编译时看到提示文件的时间为将来的时间,可以使用touch命令来修改。 =================================Linux chmod +755和c
Ubuntu16 下创建文件时没有权限
可以在终端输入命令行sudo nautilus ,在nautilus中直接GUI操作,中途不要关终端。
Linux 下创建一个文件,打开一个目录需要什么权限呢?
linux 下的文件创建和进入目录: 1 进入目录的权限要求:             首先从上图大家可以看见我的test目录的文件属性为:       d r w x r w x r - x       这10个字母,我们把第一个单独为一组,剩下九个每三个一组从前到后。第一组代表user,第二组代表group,第三组代表other。其中rwx分别代表的是 执行,可读,可写权限。
Linux安装vsftp:install: 无法创建普通文件“/usr/local/man/man8/vsftpd.8”:没有那个文件或目录
在编译模式中安装vsftpd时,出错:install:无法创建普通文件“/usr/local/man/man8/vsftpd.8”:没有那个文件或目录  如下图 找到安装的目录,修改安装的配置文件MakeFIle,我的结构如下图 修改文件中的内容,在MakeFile中修改内容如下 修改成下面的代码 然后,再重新sudo make install一遍,就OK了
删除文件没有权限
今天删除非系统文件时提醒我需要lenovo的权限才可以删除。 解决方法:右键要删除文件——属性——安全——选择需要的用户名——编辑   我的权限除了特殊权限其他都是勾选状态,直接点“确定”,等系统添加完毕后,就可删除了。 与百度方法有所差异