【问题标题】:Android Permission Denied when Writing files写入文件时Android权限被拒绝
【发布时间】:2023-04-01 15:30:01
【问题描述】:

当我说内部存储不是为了保存安全数据时,我试图在内部存储中创建一个文件,它将保存一些图像或公共文件我正在尝试一切,但它给了我错误,我没有不知道为什么 D:

代码:

File file = new File(Environment.getDataDirectory() + File.separator
        + "test1111111.txt");
Log.e("ERROR", Environment.getDataDirectory() + File.separator
        + "testfile.txt");
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}
byte[] data1 = {
        1, 1, 0, 0
};
// write the bytes in file
if (file.exists())
{
    OutputStream fo = null;
    try {
        fo = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    try {
        fo.write(data1);
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        fo.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("file created: " + file);

}

错误:

04-24 03:41:22.704    7797-7797/com.test.test W/dalvikvm﹕ VFY: unable to resolve virtual method 357: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
04-24 03:41:22.744    7797-7797/com.test.test E/ERROR﹕ /data/testfile.txt
04-24 03:41:22.744    7797-7797/com.test.test W/System.err﹕ java.io.IOException: open failed: EACCES (Permission denied)
04-24 03:41:22.744    7797-7797/com.test.test W/System.err﹕ at java.io.File.createNewFile(File.java:940)

清单:

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

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

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

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

    </application>

</manifest>

在模拟器中工作正常,但是当我尝试使用手机时,它给了我错误。 模拟器:

设备: 它给了我错误。

已编辑

【问题讨论】:

  • 您是否在正确的位置写入权限。仔细检查并再次运行

标签: android file permissions internal-storage


【解决方案1】:

数据目录是系统的目录,你永远不能有写入权限。

试一试:

File file = new File(Environment.getExternalStorageDirectory() + File.separator + "testfile.txt");

看到这个: Data directory has no read/write permission in Android

【讨论】:

    【解决方案2】:

    您将无权在 /data 文件夹下写入文件。或许您可以尝试使用 SD 卡或 Android 内部存储。

    【讨论】:

    • 你能指导我吗?我编辑了我的帖子,并发布了一张关于我想要的东西的图片。它适用于模拟器,但不适用于手机
    • 有些手机里面已经有SD卡了。这里的 SD 卡是指 Environment.getExternalStorageDirectory() 这里。 android内部存储是指/data/data/yourpackagename/。您可以使用 context.getFilesDir() 获得内部存储。请参考stackoverflow.com/questions/1998400/…的详细信息
    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 2015-11-24
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多