简体   繁体   English

W/System.err: java.io.IOException: 写入文件时权限被拒绝

[英]W/System.err: java.io.IOException: Permission denied when writing file

I'm trying to create a file to store the data collected by AudioRecord.我正在尝试创建一个文件来存储 AudioRecord 收集的数据。 But when I do that, android studio show me that:但是当我这样做时,android studio 告诉我:

 04-09 21:23:47.665 28293-28293/com.example.gongk.testfmcwv3 W/art: Before 
    Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
04-09 21:23:47.845 28293-28293/com.example.gongk.testfmcwv3 W/System.err: java.io.IOException: Permission denied
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at java.io.UnixFileSystem.createFileExclusively0(Native Method)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:280)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at java.io.File.createNewFile(File.java:948)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at com.example.gongk.testfmcwv3.MainActivity.init(MainActivity.java:82)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at com.example.gongk.testfmcwv3.MainActivity.onCreate(MainActivity.java:63)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.Activity.performCreate(Activity.java:6912)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2900)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.ActivityThread.-wrap14(ActivityThread.java)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.os.Looper.loop(Looper.java:154)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6688)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
04-09 21:23:47.846 28293-28293/com.example.gongk.testfmcwv3 W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
04-09 21:23:47.866 28293-28300/com.example.gongk.testfmcwv3 W/art: Suspending all threads took: 5.158ms

My AndroidManifest.xml:我的 AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.gongk.testfmcwv3">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

java code:代码:

file = new File(Environment.getExternalStorageDirectory(),"TestFMCWR");
        if (file.exists()) file.delete();
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }

I can't figure out why the permission is not work.我无法弄清楚为什么权限不起作用。

如果您的目标 api 级别 >=29 或者您使用的是 android 10,那么请在应用程序标签的应用程序清单文件中添加以下行

android:requestLegacyExternalStorage="true"

Try this,尝试这个,

    private Context mContext=YourActivity.this;

    private static final int REQUEST = 112;


    if (Build.VERSION.SDK_INT >= 23) {
        String[] PERMISSIONS = {android.Manifest.permission.READ_EXTERNAL_STORAGE,android.Manifest.permission.WRITE_EXTERNAL_STORAGE};
        if (!hasPermissions(mContext, PERMISSIONS)) {
            ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST );
        } else {
            //do here
        }
    } else {
         //do here
    }

get Permissions Result获取权限结果

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case REQUEST: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        //do here
                } else {
                    Toast.makeText(mContext, "The app was not allowed to read your store.", Toast.LENGTH_LONG).show();
                }
            }
        }
    }

check permissions for marshmallow检查棉花糖的权限

    private static boolean hasPermissions(Context context, String... permissions) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }
        }
        return true;
    }

Manifest显现

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

I was experiencing this same issue.我遇到了同样的问题。 In other words, my manifest appeared to have all the correct permissions, and I was running without issues on API level 22. When I installed on a device with API level 25, my camera feature stopped working.换句话说,我的清单似乎拥有所有正确的权限,而且我在 API 级别 22 上运行没有问题。当我安装在 API 级别 25 的设备上时,我的相机功能停止工作。 I could see in the logs that I was getting your same exception as OP.我可以在日志中看到我遇到了与 OP 相同的异常。

This was solved by going into the app's settings on the device and allowing "Storage" permission.这是通过进入设备上的应用程序设置并允许“存储”权限来解决的。 No code changes needed.无需更改代码。

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

相关问题 W/System.err:java.io.IOException:无法运行程序“python”:错误=13,权限被拒绝 - W/System.err: java.io.IOException: Cannot run program "python": error=13, Permission denied java.io.IOException: Permission denied 写入可移动 SD 卡时出错 - java.io.IOException: Permission denied Error when writing to removable SD card java.io.IOException:Java中的权限被拒绝 - java.io.IOException: Permission denied in Java java.io.IOException:权限被拒绝但文件已创建 - java.io.IOException: Permission denied but file is created File.createNewFile()给出java.io.IOException:权限被拒绝 - File.createNewFile() gives java.io.IOException: Permission denied java.io.IOException:在Andoid上使用相机时权限被拒绝? - java.io.IOException: Permission denied when using Camera on Andoid? java.io.IOException:权限被拒绝无法在 Linux 中创建文件 - java.io.IOException: Permission denied cannot create file in Linux java.io.IOException:createNewFile() 的权限被拒绝 - java.io.IOException: Permission denied for createNewFile() 即使在询问权限后,java.io.IOException 权限也被拒绝 - java.io.IOException Permission denied even after asking the permision java.io.IOException:关闭XSSFWorkbook时,jenkins中的权限被拒绝 - java.io.IOException: Permission denied in jenkins While Closing XSSFWorkbook
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM