[英]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.