Android - 打开失败:/ mnt中的EACCES(权限被拒绝)

时间:2017-08-21 21:13:37

标签: java android genymotion

我正在尝试在共享文件夹中创建一个文件(在emulator running Android和运行Ubunut的主机系统之间):/ mnt / shared / androidShared

我在清单文件中添加了必要的行,没有权限问题:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yalishanda.myapplication">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <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"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

然而,在尝试创建文件时,我得到了这个错误:

java.io.FileNotFoundException:/mnt/shared/androidShared/test.txt:open failed:EACCES(Permission denied)

相应的代码:

   public void onButtonTap(View v){

        String filepath ="/mnt/shared/androidShared/test.txt";
        FileOutputStream fos = null;
        try {
            FileOutputStream outputStream = new FileOutputStream (new File("/mnt/shared/androidShared/test.txt"));
            byte[] buffer = "This will be writtent in test.txt".getBytes();
            fos.write(buffer, 0, buffer.length);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我也尝试按如下方式逃避反斜杠:

//mnt//shared//androidShared//test.txt"

但错误仍然相同。

为什么我无法创建文件?即使我提前创建文件并尝试写入它也会出现同样的错误。

执行此行时抛出异常:

FileOutputStream outputStream = new FileOutputStream (new File("/mnt/shared/androidShared/test.txt"));

我也试过这些方法,没有取得任何成功:http://paste.ubuntu.com/25364833/

如何在此文件夹中创建文件?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我在便携式嵌入式设备上运行所有这些

除了可能在root设备上或使用自定义固件之外,您无法实现所需。 Android不直接支持SFTP,SMB / CIFS或任何其他文件系统级别的共享文件解决方案。

即使您修改了设备以支持此功能,您的设备也需要访问SFTP,SMB / CIFS或其他文件服务器。

请注意,您的问题链接到Genymotion的文档,Genymotion是一个模拟器,而不是设备。

另一种方法是运行某种应用服务器(例如,Web服务)而不是文件服务器,并从设备上的应用代码访问该服务器。这不需要对设备固件进行生根或更改。