简体   繁体   English

创建新文件时权限被拒绝错误 | 安卓

[英]Permission denied error while Creating new File | Android

I am trying to create a image file to external storage to share it.我正在尝试将图像文件创建到外部存储以共享它。 but while trying following code I am having some error但是在尝试以下代码时,我遇到了一些错误

        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"))

Till now I found solutions only to use直到现在我找到了只能使用的解决方案

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

and

to set permission设置权限

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

that I have already used.But still gettig error as below in Error Tab我已经使用过。但在错误选项卡中仍然出现如下错误

E/path =: + /temporary_file.jpg java.io.IOException: Permission denied E/path =: + /temporary_file.jpg java.io.IOException: 权限被拒绝

and in info tab并在信息选项卡中

W/System.err: java.io.IOException: Permission denied W/System.err: java.io.IOException: 权限被拒绝

W/System.err: at java.io.UnixFileSystem.createFileExclusively0(Native Method) W/System.err: 在 java.io.UnixFileSystem.createFileExclusively0(Native Method)

W/System.err: at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:280) W/System.err: 在 java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:280)

W/System.err: at java.io.File.createNewFile(File.java:948) W/System.err: at com.irony.balls.MainActivity$onCreate$8.onClick(MainActivity.kt:277) W/System.err:在 java.io.File.createNewFile(File.java:948) W/System.err:在 com.irony.balls.MainActivity$onCreate$8.onClick(MainActivity.kt:277)

W/System.err: at android.view.View.performClick(View.java:5611) W/System.err: 在 android.view.View.performClick(View.java:5611)

10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at android.view.View$PerformClick.run(View.java:22276) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at android.os.Handler.handleCallback(Handler.java:751) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at android.os.Looper.loop(Looper.java:154) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6195) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at java.lang.reflect.Method.invoke(Native Method) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err:在 android.view.View$PerformClick.run(View.java:22276) 10-15 20:33:17.912 29759- 29759/com.irony.balls W/System.err:在 android.os.Handler.handleCallback(Handler.java:751) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err : 在 android.os.Handler.dispatchMessage(Handler.java:95) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: 在 android.os.Looper.loop(Looper. java:154) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6195) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System.err:在 java.lang.reflect.Method.invoke(Native Method) 10-15 20:33:17.912 29759-29759/com.irony.balls W/System。错误:在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)

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

If your device is working on Android 6 or higher have you already requested runtime permissions?如果您的设备运行的是 Android 6 或更高版本,您是否已经请求了运行时权限?

See https://developer.android.com/training/permissions/requesting.html for more details.有关更多详细信息,请参阅https://developer.android.com/training/permissions/requesting.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM