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

创建新文件时出现权限被拒绝错误| Android

姬和歌
2023-03-14

我正在尝试创建一个图像文件到外部存储器以共享它。但在尝试下面的代码时,我遇到了一些错误

        var icon: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.namelogo)

        val shareIntent = Intent(Intent.ACTION_SEND)
        shareIntent.type = "image/*"
        val bytes = ByteArrayOutputStream()
        icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
        val path = File.separator + "temporary_file.jpg"

        val f = File(Environment.getExternalStorageDirectory().toString(), path)
        try {


            if (!f.parentFile.exists())
                f.parentFile.mkdirs()
            if (!f.exists())
                f.createNewFile()
            f.createNewFile()
            val fo = FileOutputStream(f)

            fo.write(bytes.toByteArray())
        } catch (e: IOException) {
            Log.e("path = ", "+ $path " + e.toString())
            e.printStackTrace()
        }

        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/IronyBalls/temporary_file.jpg"));
        startActivity(Intent.createChooser(shareIntent, "Share Image"))

到目前为止,我找到的解决方案只有使用

if (!f.parentFile.exists())
      f.parentFile.mkdirs()
if (!f.exists())
      f.createNewFile()

设置权限

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

我已经用过了。但仍然在错误选项卡中获得如下错误

E/path

和在信息选项卡中

W/系统。错误:java。木卫一。IOException:权限被拒绝

W/系统。错误:在java。木卫一。UnixFileSystem。CreateFileExclusivey0(本机方法)

W/System.err:在java.io.UnixFileSystem.createFileEx开除(UnixFileSystem.java:280)

W/System.err:在java.io.File.createNewFile(File.java:948)W/System.err:在com.irony.balls.Main活动$onCreate$8.on点击(Mainctivity.kt:277)

W/System.err:android.view.View.perform点击(View.java:5611)

10-15 20:33:17.912 29759-29759/com.irony.ballsW/System.err: atandroid.view.View$PerformClick.run(View.java:22276)10-15 20:33:17.912 29759-29759/com.irony.ballsW/System.err:android.os.Handler.handle回拨(Handler.java:751)10-15 20:33:17.912 29759-29759/com.irony.ballsW/System.err: atandroid.os.H<--PLHD--13/>消息(Handler.java:95)10-15 20:33:17.912 29759-29759/com.irony.ballsW/System.err: atandroid.os.Looper.loop(Looper.java:154)10-15 20:33:17.912 29759-29759/com. irony. ball W/System. err: at android. app.ActivityThread. main(ActivityThread. java: 6195)10-15 20:33:17.912 29759-29759/com. irony. ball W/System. err: at java. lang.反射。方法调用(本地方法)10-15 20:33:17.912 29759-29759/com. irony. ball W/System. err: at com. android. interal. os.ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 874)

10-15 20:33:17.912 29759-29759/com.irony.ballsW/System.err:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)

共有1个答案

范文昌
2023-03-14

如果您的设备在Android6或更高版本上运行,您是否已请求运行时权限?

更多详情见https://developer.android.com/training/permissions/requesting.html。

 类似资料:
  • 首先,我想说我可能缺少了一些基本的东西,但实际上我是Symfony的新手。 当我从terminal创建包时(我使用的是mac),它给了我这个错误;

  • 我的清单里有这个: 这是我尝试创建和写入文件的地方(它在一个名为的文件中): 当我尝试创建文件时,会显示以下内容: 如您所见,它在此处打印,表示授予了权限,但紧接着出现了“权限被拒绝”错误。有没有办法解决这个问题? 编辑:在旁注上,当它说它试图保存到数据/用户/0/cs时。cscb07courseproject/files,是在项目中还是保存在我的计算机上?因为当我去我的终端做cd/data或cd

  • 问题内容: 我正在使用Amazon EC2托管通过git部署到服务器的网站。之前,我在同一类型的EC2 Ubuntu Linux Server实例上使用了本教程,并且运行良好。但是,当我尝试推送到服务器时,收到以下错误跟踪: 教程:http://toroid.org/ams/git- website-howto 跟踪: 目前,我的存储库中只有一个文件,即。 错误跟踪显示拒绝创建文件的权限。请您告诉

  • 问题内容: 我运行 npm install lodash, 但它抛出 错误:EACCES:权限被拒绝 错误。我知道这是权限问题,但据我所知,本地安装节点模块不需要sudo权限。如果我使用sudo运行它,它将安装在〜/ node_modules文件夹中。 drwxrwxr-x 是现有文件夹的文件许可权。我不知道可能出了什么问题。 下面是错误消息。 问题答案: 使用 npm init 创建 packa

  • 我运行npm install lodash,但它抛出错误:EACCES:权限被拒绝错误。我知道这是权限问题,但据我所知,在本地安装节点模块不需要sudo权限。如果我用sudo运行它,它会安装在~/node\u modules文件夹中。drwxrwxr-x是现有文件夹的文件权限。我不知道可能出了什么问题。 下面是错误消息。

  • 我试图在txt文件中写入从html表单获取的数据,但出现以下错误:警告:fopen(/var/www/4/datos.txt):无法打开流:在/var/www/4/comprobacionformulaio中的权限被拒绝。php第13行警告:fwrite()希望参数1是资源,布尔值在/var/www/4/comprobacionformulaio中给出。php第16行警告:fclose()希望参数